2017-09-15 69 views
0

BlockingDataflowPipelineRunnerでジョブが完了すると、現在のデータフロージョブの詳細(ID、名前、タイプ、開始時刻、終了時刻など)を取得しようとしています。Java SDKを使用して現在のデータフロージョブの詳細を取得する方法は?

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クラスはに任意のメソッドを持っていない、私はステータスを取得するには、以下のコードを使用している

enter image description here

、我々はデータフローのダッシュボードに表示内容と同様に上記の詳細を入手してください。誰でも助けてくれますか?

答えて

1

PipelineResultには、すべてのランナーに共通のApache Beamパイプラインに関する情報が含まれています。 DataflowサービスからDataflow固有の情報を取得するには、下位レベルのDataflowClientを使用します。またDataflowPipelineJobPipelineResultのデータフローの実装)から入手可能であるjobId必要があります:

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

関連する問題