apache-flink - 从保存点恢复时避免在 Apache Flink 作业中运行初始化代码
问题描述
我有一个 Apache Flink Job,使用 DataStream API 实现,其中包含一些在定义和提交作业图之前的初始化代码。初始化代码应该只在第一次提交作业时运行,而不是在从检查点恢复作业或使用保存点更新作业时运行。
似乎在从检查点进行故障转移期间重新启动作业时,该作业会从存储在检查点中的作业图重新启动 - 特别是,初始化代码不会第二次运行(这是我想要的)。
从保存点运行作业时是否同样可能?换句话说,有没有办法只在作业不是从保存点开始时才执行代码?
解决方案
如果你实现了CheckpointedFunction
接口,那么initializeState(FunctionInitializationContext context)
在初始化时会被调用。然后您可以使用context.isRestored()
来确定作业是否是第一次启动。
推荐阅读
- c - 尝试交换节点数据
- iis - 由于权限不足,Azure DevOps 管理 IIS 任务部署失败,但帐户位于本地管理员组中
- python - 使用 Python 和 beautifulsoup4 登录网站后,如何抓取搜索结果?
- javascript - 关于 .replace 函数的功能范围的问题
- c++ - 将文件夹导入 Visual Studio 2017
- azure - 哪种 Azure 存储方法最适合临时文件传输?
- python - 索引超出范围错误:使用 Selenium 在多个网页的元素列表中迭代页面点击
- tensorflow - InvalidArgumentError:不兼容的形状:[1920] 与 [32,60] [[{{node metrics_3/acc/Equal}}]]
- blockchain - 使用“tendermint init”启动tendermint 节点时出错
- eclipse - 如何从 github 项目创建 jar