窗口操作在流处理和批处理之间起到了桥梁的作用。
Flink引擎本质上是流式引擎,认为批处理是流处理的一个特例。因此,通过窗口将流数据划分为有限大小的集合,使得在这些有界的数据集上可以进行批处理风格的计算。
通过配置窗口的参数,如长度和滑动间隔,可以精确地控制数据的聚合和计算频率,以满足各种业务需求。
组件
Flink的窗口操作内部实际上包含了三个组件来描述和定义一个窗口:WindowAssigner、Trigger和Evictor。
- Window Assigner 用来决定某个元素被分配到哪个/哪些窗口中去;
- Trigger(触发器)决定了一个窗口何时能够被计算或清除,每个窗口都会拥有一个自己的 Trigger ;
- Evictor(驱逐者)则在 Trigger 触发之后,并且在窗口被处理之前,剔除窗口中不需要的元素,其相当于一个过滤器。
类型:时间&数量
Flink支持两种主要类型的窗口:基于时间的窗口和基于数量的窗口。
- 基于时间的窗口:这种窗口根据时间戳将数据流划分为不同的时间段。
选择合适的窗口类型对于处理无限数据流和实现有效的实时分析至关重要。在Flink中,可以根据数据特性和业务需求选择不同的窗口类型:- 滚动窗口:适合处理周期性的任务。是固定时间长度的窗口,不重叠地依次划分数据流。例如,每五分钟计算一次数据的平均值。
- 滑动窗口:用于需要更频繁更新结果的场景。滑动窗口有固定的长度和滑动间隔,允许窗口重叠,从而提供更细粒度的实时数据更新。例如,每五分钟滑动一次的十分钟窗口,可以每五分钟更新前十分钟的数据分析。

最低0.47元/天 解锁文章
1336

被折叠的 条评论
为什么被折叠?



