Google cloud dataflow 如何获取当前数据流作业&x27;使用Java SDK的详细信息?
在BlockingDataflowPipelineRunner上完成作业后,我尝试获取当前数据流作业的详细信息,如id、名称、类型、开始时间、结束时间等。与我们在dataflow仪表板中看到的细节类似 我已使用以下代码获取状态Google cloud dataflow 如何获取当前数据流作业&x27;使用Java SDK的详细信息?,google-cloud-dataflow,Google Cloud Dataflow,在BlockingDataflowPipelineRunner上完成作业后,我尝试获取当前数据流作业的详细信息,如id、名称、类型、开始时间、结束时间等。与我们在dataflow仪表板中看到的细节类似 我已使用以下代码获取状态 Pipeline p; ... ... PipelineResult result = p.run(); switch (result.getState()) { case CANCELLED:
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类没有任何方法来获取上述详细信息。有人能帮我吗?
PipelineResult
包含有关所有跑步者通用的Apache Beam管道的信息。要从数据流服务中获取特定于数据流的信息,可以使用低级别。您还需要jobId
,它可从DataflowPipelineJob
获得(Dataflow对PipelineResult
的实现):
作业
包含所有感兴趣的字段。请参见不幸的是,当管道从模板启动时,这不起作用。@jkff这对我不起作用。有其他解决方案吗?很抱歉,我已经有几年没有涉及数据流了。您可能想在Apache Beam user@邮件列表中询问。您用于获取开始时间和结束时间的解决方案是什么?下面的解决方案不起作用
PipelineResult res = pipeline.run();
String jobId = ((DataflowPipelineJob) res).getJobId();
DataflowClient client = DataflowClient.create(options);
Job job = client.getJob(jobId);