根据Dataflow documentation,有两种方法可以在云中运行Dataflow管道/作业:
BlockingDataflowPipelineRunner
)DataflowPipelineRunner
)使用同步时,它当然会在作业完成时阻止并返回PipelineResult
。没关系。
但是,如果我想在异步运行时检查作业的状态,该怎么办?我想:
DataflowPipelineRunner
使用gcloud
命令行工具轮询status of the job is possible。但是,如何通过Java SDK(REST API)以编程方式完成此操作?我看不到有任何方法可以促进这一点。
这样做的动机是我们有一份工作挂起,直到它开始后的11个小时我们才意识到这一点。通常需要2个小时。
答案 0 :(得分:1)
您可以使用BlockingDataflowPipelineRunner
使用的相同API来执行此操作。
方法DataflowPipelineRunner#run
返回DataflowPipelineJob
。方法DataflowPipelineJob#getState
将允许您检查作业的当前状态。您也可以通过DataflowPipelineJob#getAggregatorValues
查询聚合器。 (BlockingDataflowPipelineRunner
使用便捷方法DataflowPipelineJob#waitToFinish
而不是自己进行轮询)