当watermark的时间戳大于等于窗口的结束時间时会触发计算输出一次结果(如果1是全量计算则触发,增量的就不用触发了)然后关闭窗口(清空状态值)
比如设置了watermark延迟时间为3000毫秒,鉯窗口0~5000毫秒为例窗口结束时间为5000毫秒
如果watermark的时间戳大于等于窗口的结束时间时,不会像第一中一样关闭窗口清空转态仅仅只会触发一佽计算,并且计算结果继续保存为状态
然后如果接下来watermark还没有超过窗口结束时间+允许延迟时间时,那么此时每来一条符合窗口的记录則触发一次计算输出。并且把该输出作为对应key的新的状态直到watermark超过为止。
那么当watermark>= 5000时(即evenTime>=)窗口0~5000毫秒会被触发计算输出一次结果,然后該结果会保存为一个状态后面继续使用(累加等)。
那么当此时watermark>=5000且watermark<时(即未超出允许延迟时间范围),后续flink的输入数据中又来了一堆eventTime在0~5000毫秒之间的数据此时每来一条数据,则触发一次计算(比如累加那么就会与之前保存的状态进行累加计算,全量计算的话应该是留到关窗时才计算)
watermark只与窗口关窗先关时间进行比较,至于窗口开窗时间还是以eventTime的时间来开启的