2016-03-07 55 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等 –