一、数据为什么会乱序?
在了解为什么会乱序之前我们先来看一下在Flink中的时间语序。
1.1 Flink Time 时间语义
-
Event Time:事件产生的时间,它通常由事件中的时间戳描述。
-
Ingestion Time:事件进入Flink的时间。
-
Processing Time:事件被处理时当前系统的时间。
这三种时间的对应关系如下图所示:

1.2 数据乱序的产生
在使用EventTime处理Stream数据的时候就会遇到数据乱序的问题。流处理从Event(事件)产生,流经Source,再到Operator,这中间需要一定的时间。虽然大部分情况下,传输到Operator的数据都是按照Event Time顺序来的,但是也不排除因为网络延迟等原因导致乱序的产生。特别是使用kafka的时候,多个分区间无法保证数据的有序性。
那么Flink针对乱序数据是如何处理的呢?
二、Flink是如何处理乱序数据的?
故事时间到~
学校准备春游,春游是大家小时候最爱的活动了。
小明班计划的发车时间是09:00~09:10。
<
文章介绍了Flink中时间语义的三种类型:EventTime,IngestionTime,ProcessingTime,并详细阐述了数据乱序的原因,特别是在EventTime场景下。Flink通过窗口计算来处理乱序,包括滚动窗口、滑动窗口和会话窗口。Watermark机制作为判断乱序和触发计算的关键,允许在一定延迟时间内处理迟到的数据,而更晚的数据则通过侧输出流进行处理。文章还讨论了水位线的设置和延迟时间的重要性。
最低0.47元/天 解锁文章
686

被折叠的 条评论
为什么被折叠?



