Flink源码阅读之周期性watermark生成逻辑分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink源码阅读之周期性watermark生成逻辑分析相关的知识,希望对你有一定的参考价值。

参考技术A 在我们的main函数中会设置时间特性和生成水印的时间间隔

不设置的话默认为

即默认ProcessingTime时生成水印的间隔为0
EventTime和IngestionTime默认生成水印间隔为200ms
中间执行过程略。。。
然后看TimestampsAndPeriodicWatermarksOperator类的open方法

从executionConfi中获取watermarkInterval ,大于0时会注册定时器,在now + watermarkInterval后会触发定时器,并将当前对象传递进去作为回调
registerTimer是个抽象方法,有两个实现

会起一个TriggerTask线程放入timerService线程池中等待调度。
TriggerTask的run方法

这里会回调TimestampsAndPeriodicWatermarksOperator的onProcessingTime方法

这里会先调udf中的getCurrentWatermark获取水印,和当前水印时间判断是否需要发送新的水印,最后再次注册定时器
这样产生了一个循环,就会周期性生成水印了。

Flink 源码解读

以上是关于Flink源码阅读之周期性watermark生成逻辑分析的主要内容,如果未能解决你的问题,请参考以下文章

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

FlinkFlink 周期性 watermark 的 传播 AssignerWithPeriodicWatermarks

Flink详解系列之五--水位线(watermark)

Flink源码阅读--Checkpoint触发机制

Flink 源码解读

Flink 源码解读