Google cloud dataflow 如何获取当前数据流作业&x27;使用Java SDK的详细信息?

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:

在BlockingDataflowPipelineRunner上完成作业后,我尝试获取当前数据流作业的详细信息,如id、名称、类型、开始时间、结束时间等。与我们在dataflow仪表板中看到的细节类似

我已使用以下代码获取状态

    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);