我尝试在BlockingDataflowPipelineRunner上完成作业后,获取当前数据流作业的详细信息,例如ID,名称,类型,开始时间,结束时间等。与我们在数据流仪表板中看到的详细信息类似,
我已使用以下代码获取状态
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类没有任何方法可以获得上述细节。有人可以帮帮我吗?
答案 0 :(得分:4)
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