首页 > Windows开发 > 详细

Flink Window的allowedLateness

时间:2020-11-30 12:00:19      阅读:20      评论:0      收藏:0      [点我收藏+]

  基于Event-Time的窗口处理流式数据,虽然提供了WaterMark机制,却只能在一定程度上解决了数据乱序的问题。但在某些情况下数据可能延时会分厂严重,及时通过WaterMark机制也无法等到数据全部进入窗口再进行处理。Flink中默认会将这些迟到的数据做丢弃处理,但是有些时候用户希望及时数据延迟到达的情况下,也能够正常按照流程处理并输出结果,此时就需要使用Allowed Lateness机制来对迟到的数据进行额外的处理。

  通常情况下用户虽然希望对迟到的数据进行窗口计算,但并不想将结果混入正常的计算流程中,例如用户大屏数据展示系统,及时正常的窗口中没有将迟到的数据进行统计,但为了保证页面数据显示的连续性,后来接入到系统中迟到数据所统计出来的结果不希望显示在屏幕上,而是将延时数据和结果存储到数据库中,便于后期对延时数据进行分析。对于这种情况需要借助Side Output来处理,通过使用sideOutputLateData(OutputTag)来标记迟到数据计算的结果,然后使用getSideOutput(lateOutputTag)从窗口结果中获取lateOutputTag标签对应的数据,之后转成独立的DataStream数据集进行处理,创建late-data的OutputTag。再通过该标签从窗口结果中将迟到数据筛选出来。

  注意:如果有WaterMark同时也有Allowed Lateness。那么窗口函数再次出发的条件是:waterMark < end-of-window + allowedLateness

Flink Window的allowedLateness

原文:https://www.cnblogs.com/zbw1112/p/14060268.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!