Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我知道如果迟到并且其所属窗口已关闭,则默认情况下会丢弃迟到的事件。 我会问如何基于事件时间的间隔加入?水印的确切行为/效果是什么?后期事件会下降吗?
一般情况下:watermark 向 Flink 表明,所有带有 watermark 时间戳的记录都已到达。所有时间戳低于水印(双方的最小水印)的元素都被认为是“迟到的”。
对于 FlinkSQL 和 DataStream API (KeyedStream#intervalJoin) 中的间隔连接,有两个单独的实现 [1,2],但答案是相同的:延迟事件将被丢弃。
有趣的是,Flink SQL 运算符有一个允许的延迟字段,但它总是用0L[2] 初始化。看来,可能有计划扩展此功能。
0L
[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