Flink 事件时间与处理时间
Posted @SmartSi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 事件时间与处理时间相关的知识,希望对你有一定的参考价值。
传送门:Flink 系统性学习笔记
Flink版本:1.11
Flink 在数据流中支持几种不同概念的时间。
1. 处理时间
Processing Time
(处理时间)是指执行相应操作的机器系统时间,是操作算子在计算过程中获取所在主机的系统时间。当用户选择使用处理时间时,所有和时间相关的算子,例如 Windows 计算,在当前任务中所有的算子直接使用所在主机的系统时间。例如,一个基于处理时间按小时进行处理的时间窗口将处理一个小时内(以系统时间为标准)到达指定算子的所有的记录。
处理时间是最简单的一个时间概念,不需要在数据流和机器之间进行协调。具有最好的性能和最低的延迟。然而,在分布式或者异步环境中,处理时间具有不确定性,因为容易受到记录到达系统速度的影响(例如,从消息队列到达的记录),还会受到系统内记录在不同算子之间的流动速度的影响。对数据乱序的处理,处理时间不是一种最优的选择。
总之,处理时间适用于时间计算精度要求不是特别高的计算场景。
2. 事件时间
Event Time
(事件时间)是每个事件在产生它的设备上发生的时间。在进入 Flink 之前,事件时间通常要嵌入到记录中,并且事件时间也可以从记录中提取出来。对于事件时间,时间的进度取决于数据,而不是系统时钟。基于事件时间的程序必须指定如何
以上是关于Flink 事件时间与处理时间的主要内容,如果未能解决你的问题,请参考以下文章
Flink 如何现实新的流处理应用第一部分:事件时间与无序处理