从保存点恢复时,避免在Apache Flink作业中运行初始化代码



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

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

从保存点运行作业时,是否可能出现这种情况?换句话说,是否有一种方法可以仅在作业不是从保存点启动时执行代码?

如果实现CheckpointedFunction接口,则初始化期间将调用initializeState(FunctionInitializationContext context)。然后,您可以使用context.isRestored()来确定作业是否是第一次启动。

最新更新