Apache Flink:通过更改Kafka主题从检查点恢复状态



当我需要从检查点开始工作并更改Kafka主题时,我面临意想不到的行为。在这种情况下,Kafka Consumer的Flink恢复状态具有早期定义的主题,最后提交的偏移量和消费者组id,因此,Kafka Consumer开始从两个主题消费消息,前一个是从状态恢复的,新一个是在作业开始时配置中定义的。

这是非常令人困惑的,最后,不完全清楚这是一个bug还是一个功能?有没有一种方法可以从检查点管理恢复作业,同时不恢复Kafka消费者的状态,而是使用配置中的参数来初始化它们?我需要以前的工作状态,但我想从另一个主题获得新的数据!

如果您更改KafkaSource(或FlinkKafkaConsumer)的UID并在启用allowNonRestoredState的情况下重新启动作业,那么您将获得您正在寻找的行为。

更改UID(或设置一个,如果你没有显式地设置一个)将防止恢复,保存的卡夫卡补偿和allowNonRestoredState将覆盖Flink内置的对国家失去保护。

最新更新