flink的watermark和window介绍以及延迟数据的处理
2021-01-22 02:14
标签:假设 第一条 重叠 count 导致 乱序 产生 style latest 本质:时间戳 作用:用于处理乱序事件 适用场景:基于事件时间做窗口运算 产生频率:默认是来一条数据下发一次watermark,但是可以调整setAutoWatermarkInterval参数设置下发watermark的时间间隔,性能会有一定的提升。 多并发的情况下,取wateramark最小的一个,例如:p1-> 12,p2->14,p3->8,则watermark取最小的8 获取watermark的位置:最好紧跟着source
说明:source端假设有两个并发,并发1的wateramark是33,并发2的watermark是88,那么source的watermark就取最小的那个33,但是如果在map之后获取watermark,由于是并发的,多个并发之间的数据没有顺序,可能来的数据的wateramark是50,但是很多数据产生的watermark都小于50,这样就会导致数据大量丢失,所以watermark的获取最好紧跟着source。 窗口分为三种,timewindow、countwindow和自定义的window。timewindow还分为滚动窗口,滑动窗口和会话窗口,图中没有画出,比较常用的是滚动窗口。 窗口大小是人为设置的,一条事件同时只能在一个窗口中,窗口之间不重叠。
窗口大小是人为设置的,滑动的大小也是人为设置的,一条事件可能同时存在于多个窗口中,窗口之间可重叠。
窗口没有固定的开始和结束时间,窗口不重叠。 这里面有两个时间概念:生成watermark的时候,允许乱序的时间和allowedLatest。 通过运行结果可以看出:第一条数据进来的时候,生成一个窗口为[15,20),第二条数据进来的时候同样属于第一个窗口,当第三条数据进来的时候,产生的watermark大于第一个窗口的结束时间,所以第一个窗口触发计算,产生结果,当第四条数据进来的时候,由于第一个窗口还没有销毁并且属于第一个窗口,所以可以再次触发窗口运算,第一个窗口的销毁时间为2019-05-30 17:12:22,也就是当watermark的时间大于这个值的时候,再来属于该窗口的数据就属于延迟数据,不能触发运算,之后进来的数据依旧是如此。 flink的watermark和window介绍以及延迟数据的处理 标签:假设 第一条 重叠 count 导致 乱序 产生 style latest 原文地址:https://www.cnblogs.com/lyr999736/p/12092780.html一:WaterMark
二:Window
2.1 类型汇总
2.2 滚动窗口
2.3 滑动窗口
2.4 会话窗口
三:Window和watermark的结合处理数据乱序问题
上一篇:C#获取当前日期时间
文章标题:flink的watermark和window介绍以及延迟数据的处理
文章链接:http://soscw.com/index.php/essay/45244.html