新版本Flink应用部署失败

Deployment of new version of Flink application failed


我在 Streaming 过程中使用 Flink 应用程序。 从kafka读取topic,下沉到kafka new Topic。

当我用新版本的代码更改应用程序并部署时,应用程序执行失败。

如果我在更改应用程序代码后部署相同的group.id,是否会与之前的状态检查点信息冲突?

是的,如果您尝试对 Flink 应用程序进行有状态升级,有几件事可能会导致它失败。

有状态运算符的 UID 用于查找每个运算符的状态。如果你没有设置 UID,那么如果作业的拓扑发生变化,状态恢复将失败,因为 Flink 将无法找到状态。有关详细信息,请参阅 the docs on Assigning Operator IDs

如果您删除了有状态运算符,那么您应该 运行 新作业,同时指定 -allowNonRestoredState

如果您修改了数据类型,则在尝试反序列化检查点或保存点中的状态时作业可能会失败。 Flink 1.7 不支持自动模式演化或状态迁移。在较新版本的 Flink 中,如果您坚持使用 POJO 或 Avro,这会自动处理。否则你需要自定义序列化程序。

如果这不能帮助您找出问题所在,请分享显示特定异常的日志中的信息。