2017-09-15 102 views
0

一旦作業在BlockingDataflowPipelineRunner上完成,我試圖獲取當前數據流作業的詳細信息,例如id,名稱,類型,開始時間,結束時間等。類似於我們在數據流中心看到的細節,如何使用Java SDK獲取當前數據流作業的詳細信息?

enter image description here

我用下面的代碼來獲取狀態,

Pipeline p; 
    ... 
    ... 
    PipelineResult result = p.run(); 

    switch (result.getState()) { 
     case CANCELLED: 
      break; 
     case DONE: 
      //MetadataTracker.insert(jobId, jobName, "Success", startTime, endTime); 
     case FAILED: 
      break; 
     case RUNNING: 
      break; 
     case STOPPED: 
      break; 
     case UNKNOWN: 
      break; 
     case UPDATED: 
      break; 
     default: 
      break;   
    } 

然而,PipelineResult類沒有任何方法獲得上述細節。誰能幫幫我嗎?

回答

1

PipelineResult包含有關所有跑步者都通用的Apache Beam管道的信息。要從Dataflow服務獲取特定於數據流的信息,可以使用底層的DataflowClient。您還需要在jobId它可從DataflowPipelineJob(數據流的執行PipelineResult):

PipelineResult res = pipeline.run(); 
String jobId = ((DataflowPipelineJob) res).getJobId(); 
DataflowClient client = DataflowClient.create(options); 
Job job = client.getJob(jobId); 

Job包含了所有感興趣的領域。見https://cloud.google.com/dataflow/docs/reference/rest/v1b3/projects.jobs

相關問題