flink的watermarker理解
watermark是用于处理乱序事件的,而正确的处理乱序事件,通常用watermark机制结合window来实现。
我们知道,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的。虽然大部分情况下,流到operator的数据都是按照事件产生的时间顺序来的,但是也不排除由于网络、背压等原因,导致乱序的产生(out-of-order或者说late element)。
但是对于late element,我们又不能无限期的等下去,必须要有个机制来保证一个特定的时间后,必须触发window去进行计算了。这个特别的机制,就是watermark。
在提取EventTime时,可以设置窗口是允许数据乱序延迟触发的 * *watermark=分区中最大的eventTime-延迟时间(WaterMakr是从上游以广播的形式发送的)
窗口的触发时机:watermark>=窗口的结束时间,窗口触发(窗口结束时间是闭区间)提取数据的eventTime,按照数据中的时间划分窗口
* 该方法仅是提供数据中的时间,不会改变数据原有的样
版权声明:
作者:lichengxin
链接:https://www.techfm.club/p/28915.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论