flink

flink watermark生成,向前推进时钟

2020-04-17  本文已影响0人  Jaming

eventTime

eventTime根据事件中的某个字段指定(assignTimestampsAndWatermarks)

watermark

watermark有两种生成方式:
1、Periodic Watermarks
周期性的触发watermark的生成和发送

2、Punctuated Watermarks
根据事件中的特殊关系生成和发送

watermark推进---事件时间时钟

flink内部算子都有一个接收数据分区和发送数据分区,每个接收数据分区对应上游的发送数据分区。
当某一个分区的watermark到来的时候,会首先跟当前分区的watermark进行比较,取最大值并更新为当前分区的watermark。然后比较所有分区的watermark最小值,如果比当前的事件时间时钟大,则更新当前的事件时间时钟,向下游发送watermark。


watermark.png

如图:
第一个分区当前watermark为3,当4来的时候跟3比,将当前的watermark更新为4,之后跟所有分区的当前watermark比,取最小的watermark,发现没有变化,所以不更新事件时间时钟。
当第三个分区5来的时候,跟2比,然后将当前分区watermark更新为5,再比较当前分区所有watermark,最小值为4,比2大,将事件时间时钟更新为4,并向下游发送watermark为4。同时触发4之前的定时器。

上一篇下一篇

猜你喜欢

热点阅读