在Apache Flink中定义和执行我的流处理器的作业图之前,我想运行一些初始化代码,例如,创建我用作作业图接收器的Kafka主题。 但是,当从保存点还原流处理器时,例如在对流处理器进行更新期间,此初始化代码不应继续运行。有没有办法以编程方式检查作业是否从保存点开始?
答案 0 :(得分:1)
从保存点重新启动作业时,必须指定保存点目录的路径。
我们通过以下方式进行操作:
$ bin/flink run -s :savepointPath [:runArgs]
如果我正确理解了您的问题,那么您要做的就是验证是否指定了--fromSavepoint
或-s
(别名)。
答案 1 :(得分:0)
可以实现了解快照和还原的Flink功能。您可以通过实现CheckpointedFunction
接口来实现。然后,在调用initializeState(FunctionInitializationContext context)
时,您可以检查context.isRestored()
以确定是否正在从快照(即从检查点或保存点)重新启动作业。
您可能会采用的另一种方法是检查主题是否已经存在,如果不存在,请继续进行创建而不考虑工作的开始方式。