Flink 事件时间与处理时间

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 事件时间与处理时间相关的知识,希望对你有一定的参考价值。

传送门:Flink 系统性学习笔记


Flink版本:1.11

Flink 在数据流中支持几种不同概念的时间。

1. 处理时间

Processing Time(处理时间)是指执行相应操作的机器系统时间,是操作算子在计算过程中获取所在主机的系统时间。当用户选择使用处理时间时,所有和时间相关的算子,例如 Windows 计算,在当前任务中所有的算子直接使用所在主机的系统时间。例如,一个基于处理时间按小时进行处理的时间窗口将处理一个小时内(以系统时间为标准)到达指定算子的所有的记录。

处理时间是最简单的一个时间概念,不需要在数据流和机器之间进行协调。具有最好的性能和最低的延迟。然而,在分布式或者异步环境中,处理时间具有不确定性,因为容易受到记录到达系统速度的影响(例如,从消息队列到达的记录),还会受到系统内记录在不同算子之间的流动速度的影响。对数据乱序的处理,处理时间不是一种最优的选择。

总之,处理时间适用于时间计算精度要求不是特别高的计算场景。

2. 事件时间

Event Time(事件时间)是每个事件在产生它的设备上发生的时间。在进入 Flink 之前,事件时间通常要嵌入到记录中,并且事件时间也可以从记录中提取出来。对于事件时间,时间的进度取决于数据,而不是系统时钟。基于事件时间的程序必须指定如何

以上是关于Flink 事件时间与处理时间的主要内容,如果未能解决你的问题,请参考以下文章

Flink 内核原理与实现-入门

「Flink」事件时间与水印

Flink 状态编程

Flink 如何现实新的流处理应用第一部分:事件时间与无序处理

Flink 如何现实新的流处理应用第一部分:事件时间与无序处理

从0到1Flink的成长之路(二十)-Time与Watermaker