窗口与水位线
1. 这是什么
窗口用于对流数据按时间或数量进行聚合,水位线用于描述事件时间进度。
这两者是 Flink 处理乱序和延迟数据的关键机制。
2. 为什么重要
很多实时业务并不是简单来一条处理一条,而是需要在一定时间范围内聚合和计算。
如果不了解窗口和水位线,就很难正确理解实时统计结果。
3. 核心内容
- 滚动窗口
- 滑动窗口
- 会话窗口
- 事件时间
- 处理时间
- 水位线与迟到数据
4. 学习重点
- 理解事件时间和处理时间的差别
- 理解水位线是对时间进度的估计
- 理解迟到数据对结果完整性的影响
5. 常见问题
- 把窗口理解成简单定时任务
- 不区分事件时间和处理时间
- 低估乱序数据对统计结果的影响
6. 练习建议
- 写一个按分钟滚动统计的示例
- 对比不同窗口类型的适用场景
- 画一张水位线推进示意图
7. 自测问题
- 事件时间为什么比处理时间更贴近真实业务
- 水位线主要解决什么问题
- 为什么窗口设计会影响实时结果解释方式