1.flink的watermark的作用是处理乱序,核心有两点:
a.延迟等待一段时间,等乱序的数据到达
b.不能一直等,得有个限度,到了时间点没到,那么后面再来的乱序数据只能丢弃
2.对某个时间窗开始统计的依据是:
a.watermark>window.endtime
b.[window.starttime,window.endtime)里面有数据
3.假设Event1到达,对应的时间窗口是[starttime1,endtime1]
情况a. watermark1的值处于窗口中,此时来了一个Event2,Event2的时间窗口和event1一样,但是watermark2比watermark1大,此时全局的watermark=watermark2,此后又来了几个Event,每个Event的时间都比Event2的时间小,也就是乱序的数据,等到最终来了一个Event5,他的watermark比endtime1要大,也就是满足上面的条件2,那么此时开始统计窗口[starttime1,endtime1]的数据,这样就处理了乱序的数据
参考链接
http://wuchong.me/categories/Flink/page/3/