一系列数据(Data-5, Data-4, Data-1, Data-3, Data-2)按一定顺序排列。
异常:数据到达顺序与它们实际发生时间顺序不一致。按照时间戳来看,Data-1最先发生,但却排在Data-4和Data-5之后。
Data-1即为延迟数据,因为它比Data-4和Data-5更早发生,但更晚到达。
注意 data-1 只是延迟,不是丢失了!
在Flink的窗口计算中,乱序数据会导致窗口的关闭时机不准确,从而影响计算结果。如若按照窗口大小来划分,Data-1可能会被分配到一个错误的窗口中。
延迟数据的存在会降低Flink处理数据的实时性。如果Data-1承载着重要的实时信息,那么延迟到达会影响决策的时效性。
某些情况下,严重的延迟数据甚至可能导致数据丢失。例如,如果窗口已经关闭,而迟到的数据又无法被重新处理,那么这些数据就会丢失。
假设现在:
触发窗口计算条件:
事件1: 表示一个到达Flink系统的事件,其事件时间为8。
窗口时间: 设置为10s,即每10s生成一个新窗口。
允许延迟时间: 设置3.5s,表示系统允许事件到达的时间延迟最多为3.5s。
水位线: 水位线是Flink用于跟踪事件时间的一个特殊标记,它的计算方式为:最大事件时间 - 允许延迟时间。在当前示例中,水位线为max(8) - 3.5 = 4.5<10,所以不触发计算。
事件二来了,看起来它是个延迟事件了。但依旧不能触发计算:
事件三来了,开始触发计算了:
但即便如此,对那些超长延迟的数据还是无法计算。处理方案:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。