如何使用Java SDK获取当前数据流作业的详细信息?

时间:2017-09-15 12:01:49

标签: google-cloud-dataflow

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

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 个答案:

答案 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