实时数据开发|Flink延时数据处理

基于EventTime的窗口处理流式数据,虽然提供了水位线Watermark机制,却只能一定程度上解决子数据乱序的间题。但在某些情况下数据可能延时会非常严重,Flink默认会将这些数据丢弃。如果要保留,需要Allowed Lateness机制来处理迟到的数据。

DataStrcam API中提供了 allowedLateness 方法,传人Time类型的时间间隔大小(t),其代表允许延时的最大时间,Flink窗口算过程中会将 Window的 Endtime加上该时间,作为窗口最后被释放的结束时间§,当接人的数据中 EventTime未超过该时间§,但 Watermak 已经超过 Window 的 EndTim时直接触发窗口计算。相反,如果事件时间超过了最大延时时间§,则只能对数据进行丢弃处理。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值