目录
阅读本文前,请先阅读《Flink时间和窗口》,了解时间以及水位线。本文以Watermark使用和源码分析为主。
Watermark源码
Watermark是数据流中的进度指示器。一个Watermark时间戳为T表示该流的事件时间(Event Time)已经进展到时间T。此时,我们认为在这个Watermark之后,不会再有事件时间比时间戳T还小或等于的事件出现,当然这只是认为,实际情况,在时间戳为T的Watermark之后可能还会有延迟的事件,它们的时间戳小于或等于T,在这种情况下,由算子的逻辑来决定如何处理“后期事件”。例如,算子可以忽略这些后期事件,将它们路由到不同的流,或发送更新到他们先前发出的结果。
Watermark在source处创建,并通过流和算子传播。
当一个源到达输入的末尾时,它会发出一个时间戳为Long.MAX_VALUE的时间戳,表