根据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
而不是自己进行轮询)