Flink 源码解读系列 DataStream 带 Watermark 生成的时间戳分配器

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 源码解读系列 DataStream 带 Watermark 生成的时间戳分配器相关的知识,希望对你有一定的参考价值。

传送门:Flink 系统性学习笔记


Flink 1.10

这篇文章主要从源码角度讲一下 Flink DataStream 中带 Watermark 生成的时间戳分配器。

我们通常通过 DataStream 的 assignTimestampsAndWatermarks 方法分配时间戳并生成 Watermark。assignTimestampsAndWatermarks 方法可以传入两种时间戳分配器:

  • 周期性生成 Watermark 的时间戳分配器:AssignerWithPeriodicWatermarks
  • 断点式生成 Watermark 的时间戳分配器:AssignerWithPunctuatedWatermarks

这两种时间戳分配器均是 TimestampAssigner 的子类,具体继承关系如下图所示。在为元素分配时间戳的基础之上增加了生成 Watermark 的逻辑,可以理解是一个实现 Watermark 生成逻辑的时间戳分配器。

1. TimestampAssigner

时间戳分配器 TimestampAssigner 主要用来从元素中提取时间戳并为元素分配事件时间时间戳。TimestampAssigner 接口比较简单,只有一个 extractTimestamp 方法,

以上是关于Flink 源码解读系列 DataStream 带 Watermark 生成的时间戳分配器的主要内容,如果未能解决你的问题,请参考以下文章

Flink 源码解读

Flink 源码解读系列 DataStream 带 Watermark 生成的时间戳分配器

Flink 源码解读系列 DataStream 带 Watermark 生成的时间戳分配器

Flink 源码解读系列 DataStream 数据流元素 StreamElement

Flink 源码解读系列 DataStream 数据流元素 StreamElement

Flink 源码解读系列 DataStream 窗口分配器 WinowAssigner