首页 > 解决方案 > 从保存点恢复时避免在 Apache Flink 作业中运行初始化代码

问题描述

我有一个 Apache Flink Job,使用 DataStream API 实现,其中包含一些在定义和提交作业图之前的初始化代码。初始化代码应该只在第一次提交作业时运行,而不是在从检查点恢复作业或使用保存点更新作业时运行。

似乎在从检查点进行故障转移期间重新启动作业时,该作业会从存储在检查点中的作业图重新启动 - 特别是,初始化代码不会第二次运行(这是我想要的)。

从保存点运行作业时是否同样可能?换句话说,有没有办法只在作业不是从保存点开始时才执行代码?

标签: apache-flink

解决方案


如果你实现了CheckpointedFunction接口,那么initializeState(FunctionInitializationContext context)在初始化时会被调用。然后您可以使用context.isRestored()来确定作业是否是第一次启动。


推荐阅读