看看这篇文章,它说关于水印
我们现在将水印设置为当前时间--5秒,这告诉Flink期望消息最多为5秒处理这是因为每个窗口只有在水印通过时才会被评估。

在后面的文章中,它解释了当设置允许迟到时:
Flink不会丢弃消息,除非它已经过了window_end_time +允许的延迟
实际上,由于设置了允许延迟,是否导致了窗口的延迟评估?
那么,水印的使用和允许的延迟究竟有什么区别呢?什么时候用哪种?
发布于 2021-01-31 17:55:28
水印延迟为Flink在第一次触发窗口之前等待无序事件的时间设置了一个下限。
允许的延迟时间决定了Flink在窗口状态下的持续时间。在窗口的状态仍然可用时到达的任何延迟事件都将再次触发窗口,从而产生更新的结果。
一旦允许的延迟过期,窗口的状态就会被清除,任何超晚的事件都会被删除或发送到侧输出。

如果窗口输出的下游用户能够处理这样的窗口结果更新(例如,该窗口连接到一个活动仪表板),那么设置一个相对较短的水印延迟并使用允许的延迟可能是有意义的。另一方面,如果您不能利用初始结果之后的任何信息,您将希望水印延迟足够大,以满足您对准确性/完整性的要求,并将允许延迟设置为零。
https://stackoverflow.com/questions/65980057
复制相似问题