我们有一个Flink应用程序,它按键对2个Kafka主题执行基于窗口的联接。连接配置如下:
window-type: TumblingWindow
window-duration: 10s
allowed-lateness: 10s
因此,当我们将流设置为从earliest
偏移开始时,就会出现问题。似乎窗口边界仍然是基于系统时钟设置的,从而拒绝最早的事件,因为它们取决于Kafkaretention-period
可能和14 days
一样旧。
有没有建议的方法来处理这个问题,或者我的理解有没有差距。
我假设您已经将环境配置为使用EventTime
,并且您正在使用从Kafka读取的记录中包含的数据来分配水印和时间戳。如果是,那么它应该正常运行。
请注意,如果其中一个主题的事件比另一个要老得多,则会收到被拒绝的(旧的(事件。如果您不关心添加延迟,可以使用BoundedOutOfOrdernessTimestampExtractor
来设置时间戳和水印,并将最大无序度设置为两个主题之间的最大时间偏移。如果你这样做,那么我想你会想用0来表示允许的迟到。