Flink窗口何时触发输出?关于Watermark触发时机的细节问询
Flink事件时间窗口的触发时机
针对你提出的问题,结论很明确:窗口会在处理Watermark本身的时候触发输出,并完成窗口的移除操作。
结合你给出的例子具体解释:
- 你定义的是5分钟滚动窗口,允许1分钟延迟,那么12:00-12:05这个窗口的「最终关闭时间」是
窗口结束时间 + 允许延迟时间 = 12:05 + 1分钟 = 12:06。 - 当Watermark的时间戳大于等于12:06时,这个Watermark流经窗口算子的瞬间,算子就会触发该窗口的计算逻辑,输出窗口结果,随后将这个窗口从Flink的状态存储中移除。
补充几个关键细节:
- Watermark本身就是Flink事件时间模型中用来驱动窗口关闭、迟到数据判定的核心信号,不需要依赖后续的业务数据记录来触发。
- 如果在Watermark超过12:06之后,还有时间戳落在12:00-12:05区间的记录到达,这些数据会被判定为迟到数据,默认会被直接丢弃;如果需要处理这类数据,可以通过设置侧输出流(Side Output)来捕获。
内容的提问来源于stack exchange,提问作者bumpbump
相关产品推荐
相关产品推荐

