Flink中WaterMark的传递

一般情况下, Watermark 是 source task 产生,不是source task也是靠近source task的map或reduce等算子产生的,  然后通过 keyby 分组后触发窗口计算。

注意keyby只是一个分配的过程而不是一个算子, 只有开窗之后的窗口方法才是真正的计算

以下内容借鉴了如下作者部分内容

作者:熊本极客
链接:https://www.jianshu.com/p/66923b0ab4a8
来源:简书

先放上结论, 然后再结合下面图示理解

Watermark 要单调递增。② Watermark在keyby之后的window操作之后取最小值向后传递。

如下图是刚开始产生了两个watermark 一个是时间为1 一个时间为 2, 正在向map传递

接着下图watermark到map了 正在向window传递, 因为经过了keyby所以, watermark要每个window都传递一份, 同时source有生成了一个time为4, 一个time为1的 watermark

之后第一批watermark会到达window, 比如先到的是watermark time=1, 那么它会在window中保存

并且等待新的watermark到来, 才会继续向后传递watermark.

window中watermark的状态就像这样

 接着 watermark time=2 到了, 那么window就会向后面发送 time=1 的那个water mark

window中watermark的状态就像这样

之后第二批的water mark到了, 第三批的也生成了

比如, watermark time=5 先到window, 那么window中就像这样

 

这个时候就会将较小的 watermark time=2 传递到后面, 同理当watermark time=4到来的时候, 经过比较会将 time=4传递到后面

最后, 看看第三批watermark到了 window

假如, watermark time=3先到的 window中 会出现什么状况呢?

因为window中目前最小的就是time =4 了, 所以time=3来了并不会增加, 所以也不会替换任何watermark也不会向下传递

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值