使用 Java SDK 检查数据流作业(异步)状态
Checking a Dataflow job (async) status using the Java SDK
根据数据流 documentation,有两种方法可以在云中 运行 数据流 pipeline/job:
- 同步(
BlockingDataflowPipelineRunner
)
- 异步(
DataflowPipelineRunner
)
当使用同步时,它当然会在作业完成时阻塞 return PipelineResult
。没关系。
但是,如果我想在异步 运行ning 时检查作业的状态怎么办?我想:
- 运行 异步作业,即使用
DataflowPipelineRunner
- 轮询作业的状态,并检查它已经运行宁
多久了
- 如果 运行 时间太长,请发出警报
使用 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
而不是自己进行轮询)
根据数据流 documentation,有两种方法可以在云中 运行 数据流 pipeline/job:
- 同步(
BlockingDataflowPipelineRunner
) - 异步(
DataflowPipelineRunner
)
当使用同步时,它当然会在作业完成时阻塞 return PipelineResult
。没关系。
但是,如果我想在异步 运行ning 时检查作业的状态怎么办?我想:
- 运行 异步作业,即使用
DataflowPipelineRunner
- 轮询作业的状态,并检查它已经运行宁 多久了
- 如果 运行 时间太长,请发出警报
使用 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
而不是自己进行轮询)