Watermark [3]#
定义 作用#
• Watermark 用于标记 Event-Time 的前进过程;
• Watermark 跟随 DataStream Event-Time 变动,并自身携带 TimeStamp;
• Watermark 用于表明所有较早的事件已经(可能)到达;
• Watermark 本身也属于特殊的事件;
目的#
用于处理乱序和延迟事件.
类型#
完美的Watermark
在顺序事件中没有太大的意义启发式的Watermark
EG W(11) = 15 - maxOutOfOrderness(4)
W(7) = 11 - maxOutOfOrderness(4)迟到事件
迟到事件被丢弃 不计算在窗口中
Watermark触发时机 [2]#
- Watermark时间 > window_end_time
如果当前的watermark已经大于或等于窗口的最大时间戳(即窗口的endTime),那么就会触发窗口计算,并输出结果。 - 在[window_start_time, window_end_time)区间中有数据存在(左闭右开)
参考#
- muke体系课 - 大数据工程师
- Flink Window触发机制 *
- 《Flink核心技术与实战》 极客时间 第三章 ***