java - 如何以编程方式从工作人员处终止 Beam Dataflow 作业

标签 java google-cloud-dataflow apache-beam

我想使用 Java Beam SDK 从工作节点以编程方式终止 Apache Beam 作业。 理想情况下,我希望该解决方案独立于运行程序,但即使是 DataflowRunner 特定的解决方案也可以。

我不想使用关闭 Hook ,我正在寻找 Beam API 支持的东西。

我发现最接近我想要的是org.apache.beam.runners.dataflow.util.MonitoringUtil::getGcloudCancelCommand。但是,这仅返回一个字符串,其中包含需要运行以取消作业的命令。它不会从 JVM 内部取消作业。

最佳答案

您可以使用两个可能的命令来停止 Dataflow 作业:CancelDrain。您可以通过使用数据流监控界面或数据流命令行界面发出命令来执行此操作。请引用official documentation

此外您还可以查看 REST update API projects.locations.jobs.update 用于更新现有 Dataflow 作业的状态。

使用Rest Update方法,用这个body,更多内容见Google Developers guide :

{ "requestedState": "JOB_STATE_DRAINING" }

此外,我真的建议您寻找this Stackoverflow线。我希望它有帮助。

关于java - 如何以编程方式从工作人员处终止 Beam Dataflow 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60735782/

相关文章:

java - 在 SWT 中触发鼠标单击事件?

java - SonarQube 5.1 为 java 添加自定义规则

java - 在 Google Dataflow 中作为 DataflowPipelineRunner 运行时访问资源文件

python - bigquery 数据流错误 : Cannot read and write in different locations while reading and writing in EU

java - 处理多个 PCollection 输出时找不到编码器

python - 数据流 : using beam. combiners 上一个 beam.combiners 的结果

java - C++ getline() 比 Java 的 readLine() 慢

java - 需要一个 Java 系统专用的类加载器

python-3.x - 数据流作业卡在从 Pub/Sub 读取

java - 如何从另一个管道中排出一个管道?