waterwark 对基于事件时间的间隔连接有什么影响

What's the effect of waterwark for event time based interval join

我知道如果迟到并且它所属的 window 已关闭,迟到的事件将默认删除。
我会问如何基于事件时间间隔加入?水印的确切 behavior/effect 是多少?迟到的事件会下降吗?

一般情况下:watermark 向 Flink 表明,所有具有 watermark 时间戳的记录都已经到达。所有时间戳低于水印(双方的最小水印)的元素都被认为是“迟到”。

对于 FlinkSQL 和 DataStream API (KeyedStream#intervalJoin) 中的间隔连接,有两个单独的实现 [1,2],但答案是相同的:延迟事件将是掉线了。

有趣的是,Flink SQL operator 有一个 allowed lateness 字段,但它总是初始化为 0L [2]。看来,可能有扩展此功能的计划。

[1] https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/co/IntervalJoinOperator.java#L230

[2] https://github.com/apache/flink/blob/master/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/plan/nodes/physical/stream/StreamExecIntervalJoin.scala#L313