写点什么

Flink 中的时间及窗口类型

作者:阿泽🧸
  • 2023-05-10
    北京
  • 本文字数:947 字

    阅读完需:约 3 分钟

Flink中的时间及窗口类型

在 Flink 中定义了 3 种时间类型:事件时间(Event Time)、处理时间(Processing Time)和摄取时间(Ingestion Time)。

1、事件时间

事件时间指事件发生时的时间,一旦确定之后再也不会改变。例如,事件被记录在日志文件中,日志中记录的时间戳就是事件时间。通过事件时间能够还原出来事件发生的顺序。使用事件时间的好处是不依赖操作系统的时钟,无论执行多少次,可以保证计算结果是一样的,但计算逻辑稍微复杂,需要从每一条记录中提取时间戳。

2、处理时间

处理时间指消息被计算引擎处理的时间,以各个计算节点的本地时间为准。例如,在物理节点 1 处理时,处理时间(即当前系统时间)为 2023-02-05 12∶00∶00,然后交给下游的计算节点进程处理,此时的处理时间(即当前系统时间)为 2023-02-05 12∶00∶01。可以看到处理时间是在不停变化的。使用处理时间依赖于操作系统的时钟,重复执行基于窗口的统计作业,结果可能是不同的。处理时间的计算逻辑非常简单,性能好于事件时间,延迟低于事件时间,只需要获取当前系统的时间戳即可。

3、摄取时间

摄取时间指事件进入流处理系统的时间,对于与一个事件来说,使用其被读取的那一刻的时间戳作作为摄取时间。摄取时间一般使用得较少,从处理机制上来说,其类似于事件时间,在作业异常重启执行的时候,也无法避免使用处理时间的结果不准确的问题。一般来说,若在数据记录中没有记录时间,又想使用事件时间机制来处理记录,会选择使用摄取时间。


Flink 中提供了 3 类默认窗口:计数窗口(Count Window)、时间窗口(Time Window)和会话窗口(Session Window)。

4、Count Window
  • Tumble Count Window:累积固定个数的元素就视为一个窗口,该类型的窗口无法像时间窗口一样事先切分好。

  • Sliding Count Window:累积固定个数的元素视为一个窗口,每超过一定个数的原则个数,则产生一个新的窗口。

5、Time Window
  • Tumble Time Window:表示在时间上按照事先约定的窗口大小切分的窗口,窗口之间不会相互重叠

  • Sliding Time Window:表示在时间上按照事先约定的窗口大小、滑动步长切分的窗口,滑动窗口之间可能会存在相互重叠的情况。

6、Session Window

Session Window 是一种特殊的窗口,当超过一段时间,该窗口没有收到新的数据元素,则视为该窗口结束,所以无法事先确定窗口的长度、元数个数,窗口之间也不会相互重叠。

发布于: 刚刚阅读数: 5
用户头像

阿泽🧸

关注

还未添加个人签名 2020-11-12 加入

还未添加个人简介

评论

发布
暂无评论
Flink中的时间及窗口类型_flink_阿泽🧸_InfoQ写作社区