[Flink] Flink的waterMark的通俗理解
导读 Flink 为实时计算提供了三种时间,即 事件时间 (event time)、 摄入时间 (ingestion time)和 处理时间 (processing time)。 遇到的问题: 假设在一个5秒的Tumble窗口,有一个EventTime是 11秒的数据,在第16秒时候到来了。图示第11秒的数据,在16秒到来了,如下图:该如何处理迟到数据 什么是Watermark Watermark的关键点: 目的:处理EventTime 窗口计算 本质:时间戳 生成方式:Punctuated和Periodic(常用) 特性:单调递增 Watermark的产生方式 Punctuated 数据流中每一个递增的EventTime都会产生一个Watermark。 Periodic(推荐) 周期性的(一定时间间隔或者达到一定的记录条数)产生一个Watermark。 Watermark解决的问题 上面的问题在于如何将迟来的EventTime 位11的元素正确处理? 当Watermark的时间戳等于Event中携带的EventTime时候,上面场景(Watermark=EventTime)的计算结果如下: 如果想正确处理迟来的数据可以定义Watermark生成策略为 Watermark = EventTime -5s, 如下: WaterMark的例子 设置WaterMark步骤: 1