apache-flink - 新版 Flink 应用部署失败
问题描述
- 环境
- flink 1.7.1
- 卡夫卡 1.0.1
我在 Streaming 过程中使用 Flink 应用程序。从 kafka 读取主题并将其下沉到 kafka 新主题。
当我用新版本的代码更改应用程序并部署时,它会导致应用程序执行失败。
如果我在更改应用程序代码后部署相同的 group.id,会不会与之前的状态检查点信息发生冲突?
解决方案
是的,如果您尝试对 Flink 应用程序进行有状态升级,有一些事情可能会导致它失败。
有状态运算符的 UID 用于查找每个运算符的状态。如果你没有设置 UID,那么如果作业的拓扑发生了变化,状态恢复将失败,因为 Flink 将无法找到状态。有关详细信息,请参阅有关分配操作员 ID 的文档。
如果您删除了一个有状态的操作符,那么您应该在指定-allowNonRestoredState
.
如果您修改了数据类型,则在尝试反序列化检查点或保存点中的状态时,作业可能会失败。Flink 1.7 不支持自动模式演化或状态迁移。在更新的 Flink 版本中,如果您坚持使用 POJO 或 Avro,则会自动处理。否则,您需要自定义序列化程序。
如果这不能帮助您找出问题所在,请分享显示特定异常的日志中的信息。
推荐阅读
- javascript - 如何在没有任何类名或 ID 的情况下使用 Javascript 或 JQuery 替换 HTML 标签
- grafana - 查询两天之间的增量
- sql - 表性能
- node.js - put route not working in node.js 显示错误 cannot PUT
- sql - 如何使用 CASE 子句将结果压缩成一行?
- sonarqube-scan - 是否可以使用 sonarqube 扫描 IBM BPM 代码?
- sql - 从字母数字字符串中删除字符并更新列中的数值
- python - 将 RDD 转换为 DataFrame 时出现 java.lang.StackOverFlowError
- python - 如何从网络获取数据
- r - 禁用闪亮仪表板中的垂直滚动条