Flink 学习笔记 Event Time
Processing Time
执行相应算子操作时机器的系统时间
当流程序运行在 proceesing time 上时,所有基于时间的算子(window)都会使用机器的系统时间。
Processing time 是最简单的“Time”概念,不需要流和机器之间的协调。 提供了最佳的性能和最低的延迟。 但是,在分布式和异步环境中,不能提供确定性,因为它易受事件到达系统速度(例如,从消息队列)、事件在系统内部算子间流动的速度以及中断的影响。
Event Time
事件发生的时间,这个时间在事件进入 Flink 之前就绑定好了,并且可以从事件记录中提取该 Event timeStamp。Event time 依赖依赖于数据本身,另外,事件时间程序必须指定如何生成事件时间水印(表示时间进度)。
Ingestion time
事件进入 Flink 的时间,在 source 算子操作的时候,每个时间将数据源的当前时间记作时间戳,其它在Flink 中有关时间的算子都是利用这个时间戳。
设置时间特性
1 | final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); |
Event Time 和 Watermarks
支持 event time 的流处理器需要一种机制来衡量时间进度 — watermarks
watermarks 携带着时间戳作为数据流的一部分流动
。。。待续。。。
- 本文作者: Kelly Liu
- 本文链接: http://tiantianliu2018.github.io/2020/03/31/Flink-学习笔记-Event-Time/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!