如何知道是否从保存点还原了作业?

时间:2020-05-19 08:20:40

标签: apache-flink

在Apache Flink中定义和执行我的流处理器的作业图之前,我想运行一些初始化代码,例如,创建我用作作业图接收器的Kafka主题。 但是,当从保存点还原流处理器时,例如在对流处理器进行更新期间,此初始化代码不应继续运行。有没有办法以编程方式检查作业是否从保存点开始?

2 个答案:

答案 0 :(得分:1)

从保存点重新启动作业时,必须指定保存点目录的路径。

我们通过以下方式进行操作:

$ bin/flink run -s :savepointPath [:runArgs]

如果我正确理解了您的问题,那么您要做的就是验证是否指定了--fromSavepoint-s(别名)。

https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/savepoints.html#resuming-from-savepoints

答案 1 :(得分:0)

可以实现了解快照和还原的Flink功能。您可以通过实现CheckpointedFunction接口来实现。然后,在调用initializeState(FunctionInitializationContext context)时,您可以检查context.isRestored()以确定是否正在从快照(即从检查点或保存点)重新启动作业。

您可能会采用的另一种方法是检查主题是否已经存在,如果不存在,请继续进行创建而不考虑工作的开始方式。