Wiondowing 使您可以控制如何对具有相同键的记录进行分组以进行有状态操作。
Note
相关操作是分组,它将具有相同密钥的所有记录分组,以确保数据被正确分区(“键入”)以用于后续操作。分组后,窗口允许您进一步对键的记录进行子分组。
例如,在连接操作中,窗口状态存储用于存储到目前为止在定义的窗口边界内接收的所有记录。在聚合操作中,窗口状态存储用于存储每个窗口的最新聚合结果。在指定的窗口保留期后,状态存储中的旧记录将被清除。 Kafka Streams 保证至少在指定的时间内保持一个窗口;默认值为一天,可以通过 Materialized#withRetention()
进行更改。
DSL支持以下类型的窗口:
Window name | Behavior | Short description |
---|---|---|
Tumbling time windows | 基于时间的 | 固定尺寸,不重叠,无间隙的窗户 |
Hopping time window | 基于时间的 | 固定大小的重叠窗口 |
Sliding time window | 基于时间的 | 固定大小的重叠窗口,用于处理记录时间戳之间的差异 |
Session window | 基于Session的 | 动态大小,不重叠,数据驱动的窗口 |
Tumbling time windows
-
定义
翻滚时间窗口
(Tumbling time windows)实际是跳跃时间窗口
(Hopping time window) 的一种特例。他们模拟固定尺寸,不重叠,无间隙的窗口。翻滚窗口由单个属性定义:窗口的大小。翻滚窗口是一个跳跃窗口,其窗口大小等于其提前间隔。由于翻滚窗口从不重叠,因此数据记录将属于一个且仅一个窗口。此图显示了使用翻滚窗口对数据记录流进行窗口化。 Windows 不重叠,因为根据定义,提前间隔与窗口大小相同。在此图中,时间数字代表分钟:例如 t = 5 表示“在五分钟标记处”。
翻滚时间窗口与时期对齐,下限间隔包含在内,上限为独占。 “与时期对齐”意味着第一个窗口在时间戳零开始。例如,大小为5000毫秒的翻滚窗口具有可预测的窗口边界
[0;5000),[5000;10000),...
- 而不是[1000;6000],[6000;11000],...
当然也不是某些东西“随机”如[1452;6452],[6452;11452],...
Hopping time window
-
定义
跳跃时间窗口是基于时间间隔的窗口。他们模拟固定大小的(可能)重叠窗口。跳跃窗口由两个属性定义:窗口的大小和其提前间隔(又名“跳”)。提前间隔指定窗口相对于前一个窗口向前移动的程度。例如,您可以配置大小为5分钟且提前间隔为1分钟的跳跃窗口。由于跳跃窗口可以重叠 - 并且通常它们可以 - 数据记录可以属于多于一个这样的窗口。
此图显示了使用跳跃窗口窗口化数据记录流。在此图中,时间数字代表分钟;例如t = 5表示“在五分钟标记处”。
跳跃时间窗口与时期对齐,下限间隔包含在内,上限为独占。 “与时期对齐”意味着第一个窗口在时间戳零开始。例如,大小为5000毫秒的翻滚窗口具有可预测的窗口边界
[0;5000),[5000;10000),...
- 而不是[1000;6000],[6000;11000],...
当然也不是某些东西“随机”如[145