使用Java SDK检查Dataflow作业(异步)状态

根据Dataflow
documentation,有两种方法可以在云中运行Dataflow管道/作业:

>同步(BlockingDataflowPipelineRunner)
>异步(DataflowPipelineRunner)

使用同步时,它当然会在作业完成时阻塞并返回PipelineResult.没关系.

但是如果我想在异步运行时检查作业的状态呢?我想:

>异步运行作业,即使用DataflowPipelineRunner
>轮询作业的状态,并检查它的运行时间
>如果它运行的时间太长,那么就举起一个alaram

使用gcloud命令行工具轮询status of the job is possible.但是,如何通过Java SDK(REST API)以编程方式完成此操作?我看不到有任何方法可以促进这一点.

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

最佳答案 您可以使用BlockingDataflowPipelineRunner使用的相同API执行此操作.

方法DataflowPipelineRunner#run返回DataflowPipelineJob.方法DataflowPipelineJob#getState将允许您检查作业的当前状态.您也可以通过DataflowPipelineJob#getAggregatorValues查询聚合器.(BlockingDataflowPipelineRunner使用方便方法DataflowPipelineJob#waitToFinish而不是自己进行轮询)

点赞