zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

Flink(27):Flink中的Watermark

flink 27
2023-09-14 09:01:24 时间

目录

0. 相关文章链接

1. 什么是Watermark

2. 如何计算Watermark

3. Watermark有什么用

4. Watermark是如何触发窗口计算的

5. 图解Watermark


0. 相关文章链接

Flink文章汇总

1. 什么是Watermark

Watermaker就是给数据再额外的加的一个时间列,也就是Watermaker是个时间戳!

2. 如何计算Watermark

定义:
    Watermaker = 数据的事件时间  -  最大允许的延迟时间或乱序时间
注意:后面通过源码会发现,准确来说:
    Watermaker = 当前窗口的最大的事件时间  -  最大允许的延迟时间或乱序时间

这样可以保证Watermaker水位线会一直上升(变大),不会下降

3. Watermark有什么用

之前的窗口都是按照系统时间来触发计算的,如: [10:00:00 ~ 10:00:10) 的窗口,
一但系统时间到了10:00:10就会触发计算,那么可能会导致延迟到达的数据丢失! 
那么现在有了Watermaker,窗口就可以按照Watermaker来触发计算! 
也就是说Watermaker是用来触发窗口计算的!

4. Watermark是如何触发窗口计算的

窗口计算的触发条件为:
    1.窗口中有数据
    2.Watermaker >= 窗口的结束时间

---------------------------------------------------------

因为前面说到  Watermaker = 当前窗口的最大的事件时间  -  最大允许的延迟时间或乱序时间
也就是说只要不断有数据来,就可以保证Watermaker水位线是会一直上升/变大的,不会下降/减小的,所以最终一定是会触发窗口计算的

---------------------------------------------------------

注意,上面的触发公式进行如下变形:
    Watermaker >= 窗口的结束时间 
    Watermaker = 当前窗口的最大的事件时间  -  最大允许的延迟时间或乱序时间
    当前窗口的最大的事件时间  -  最大允许的延迟时间或乱序时间  >= 窗口的结束时间
    当前窗口的最大的事件时间  >= 窗口的结束时间 +  最大允许的延迟时间或乱序时间

5. 图解Watermark


此博客根据某马2020年贺岁视频改编而来:【狂野大数据】Flink1.12从入门到精通#2021#流批一体#黑马程序员#大数据_哔哩哔哩_bilibili

注:其他相关文章链接由此进 -> Flink文章汇总