使用 Java SDK 检查数据流作业(异步)状态

Checking a Dataflow job (async) status using the Java SDK

根据数据流 documentation,有两种方法可以在云中 运行 数据流 pipeline/job:

  1. 同步(BlockingDataflowPipelineRunner
  2. 异步(DataflowPipelineRunner

当使用同步时,它当然会在作业完成时阻塞 return PipelineResult。没关系。

但是,如果我想在异步 运行ning 时检查作业的状态怎么办?我想:

  1. 运行 异步作业,即使用 DataflowPipelineRunner
  2. 轮询作业的状态,并检查它已经运行宁
  3. 多久了
  4. 如果 运行 时间太长,请发出警报

使用 gcloud 命令行工具轮询 status of the job is possible。但是,如何通过 Java SDK (REST api) 以编程方式完成此操作?我看不到任何有助于此的方法。

这样做的动机是我们有一个工作挂起,直到它开始后 11 个小时我们才意识到。一般需要2个小时。

您可以使用 BlockingDataflowPipelineRunner 使用的相同 API 来执行此操作。

方法 DataflowPipelineRunner#run returns a DataflowPipelineJob. The method DataflowPipelineJob#getState will let you check the current state of the job. You may also interrogate aggregators via DataflowPipelineJob#getAggregatorValues. (The BlockingDataflowPipelineRunner uses the convenience method DataflowPipelineJob#waitToFinish 而不是自己进行轮询)