【发布时间】:2021-06-16 19:38:34
【问题描述】:
我正在尝试通过向 getKey 函数添加一个新的 keyby 值来更新我的一个生产 flink 作业中的 keyby 函数,例如keyby 函数是
return Tuple2.of(
value.getTimestamp(),
value.isDefault()
现在是
return Tuple3.of(
value.getTimestamp(),
value.isDefault(),
value.isRedirect()
)
我正在尝试通过优雅地停止作业并使用保存点恢复将我的新作业部署到 uat 服务器(以确保它在开始生产之前工作),但是我收到以下错误:
java.lang.Exception:创建 StreamOperatorStateContext 时出现异常。原因:org.apache.flink.util.FlinkException:无法从提供的 1 个恢复选项中的任何一个恢复 WindowOperator_0dd2cd57af65cb839540855ced2e4169_(1/1) 的键控状态后端
但是,如果我恢复工作(使用新的按键功能)但没有保存点,它会起作用。
我从错误中得到最好的猜测是,保存点包含使用旧 keyby 函数的数据,现在有一个新的,它们不兼容。
然而这引出了一个问题,如何在优雅地停止作业的同时更新生产 flink 作业的 keyby 函数?
任何帮助将不胜感激!
【问题讨论】:
标签: java deployment streaming apache-flink flink-streaming