1. Flink Time时间的分类
简介: 在Flink流计算中,关于时间语义支持三种,其中2种语义最为关键:
- 1)、处理时间
ProcessingTime
,使用处理时间- SparkStreaming时,窗口计算,使用的就是处理时间
- 2)、事件时间
EventTime
,最为合理- StructuredStreaming中,窗口计算,使用的是事件时间
在Flink的流式处理中,会涉及到时间的不同概念,如下图所示:
- StructuredStreaming中,窗口计算,使用的是事件时间
- 1)、事件时间
EventTime
- 事件真真正正发生产生的时间,比如订单数据中订单时间表示订单产生的时间
- 2)、摄入时间
IngestionTime
- 数据被流式程序获取的时间
- 3)、处理时间
ProcessingTime
- 事件真正被处理/计算的时间
其中: 事件时间
和 处理时间
最为重要
2. 示例说明Flink Time中EventTime重要性
简介: 通过几个示例,感受对数据处理时,需要使用基于事件时间进行分析,更加合理化。
-
1)、示例一
-
2)、示例二
-
3)、示例三
总结:
实际开发中,希望基于事件时间来处理数据,但因为数据可能网络延迟等原因,出现了乱序或延迟到达,那么可能处理的结果不是想要的甚至出现数据丢失的情况,所以需要一种机制来解决一定程度上的数据乱序或延迟到底的问题:水位线WaterMark