2016-03-07 54 views
4

根据数据流documentation数据流作业(异步)状态,有2种方式来运行在云中的数据流管道/工作:检查使用Java SDK

  1. 同步(BlockingDataflowPipelineRunner
  2. 异步(DataflowPipelineRunner

当使用同步的,它当然将块并返回PipelineResult当作业完成。没关系。

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

  1. 运行作业异步即使用DataflowPipelineRunner
  2. 投票工作于它的状态,并检查了多久,它已经运行
  3. 如果它已经运行过久则引发alaram

使用gcloud命令行工具轮询status of the job is possible。但是,如何通过Java SDK(REST API)以编程方式完成?我看不到任何有助于实现的方法。

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

回答

1

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

方法DataflowPipelineRunner#run返回DataflowPipelineJob。方法DataflowPipelineJob#getState将让您检查作业的当前状态。您也可以通过DataflowPipelineJob#getAggregatorValues询问汇总人员。 (BlockingDataflowPipelineRunner使用方便的方法DataflowPipelineJob#waitToFinish,而不是做轮询本身)

+0

我只能得到状态跑步,做完等?或者是否有可能通过使用命令行gcloud工具获得更多信息,例如: creation_time,job_name等 –