使用Java SDK

时间:2016-03-07 00:12:28

标签: java google-cloud-dataflow

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

  1. 同步(BlockingDataflowPipelineRunner
  2. 异步(DataflowPipelineRunner
  3. 使用同步时,它当然会在作业完成时阻止并返回PipelineResult。没关系。

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

    1. 异步运行作业,即使用DataflowPipelineRunner
    2. 轮询作业的状态,并检查其运行时间
    3. 如果它运行的时间太长,那就提起一个alaram
    4. 使用gcloud命令行工具轮询status of the job is possible。但是,如何通过Java SDK(REST API)以编程方式完成此操作?我看不到有任何方法可以促进这一点。

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

1 个答案:

答案 0 :(得分:1)

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

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