flink的watermarker理解

watermark是用于处理乱序事件的,而正确的处理乱序事件,通常用watermark机制结合window来实现。

我们知道,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的。虽然大部分情况下,流到operator的数据都是按照事件产生的时间顺序来的,但是也不排除由于网络、背压等原因,导致乱序的产生(out-of-order或者说late element)。

但是对于late element,我们又不能无限期的等下去,必须要有个机制来保证一个特定的时间后,必须触发window去进行计算了。这个特别的机制,就是watermark。

在提取EventTime时,可以设置窗口是允许数据乱序延迟触发的 * *watermark=分区中最大的eventTime-延迟时间(WaterMakr是从上游以广播的形式发送的)

窗口的触发时机:watermark>=窗口的结束时间,窗口触发(窗口结束时间是闭区间)提取数据的eventTime,按照数据中的时间划分窗口

* 该方法仅是提供数据中的时间,不会改变数据原有的样子

* watermark是一种特殊的消息,这种特殊的消息是提取eventTime中的算子,向下游发送的,发送给窗口对应的task

* watermark=分区中最大的eventTime-延迟时间 * 窗口的触发时机:watermark>=窗口的结束时间,窗口触发

多分区生成watermark

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值