【问题标题】:How to get the current dataflow job's details using the Java SDK?如何使用 Java SDK 获取当前数据流作业的详细信息?
【发布时间】:2017-09-15 23:18:45
【问题描述】:

一旦在 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 类没有任何方法可以获取上述详细信息。谁能帮帮我?

【问题讨论】:

  • 您用来获取开始时间和结束时间的解决方案是什么?以下解决方案不起作用

标签: google-cloud-dataflow


【解决方案1】:

PipelineResult 包含有关所有运行器通用的 Apache Beam 管道的信息。要从 Dataflow 服务获取特定于 Dataflow 的信息,您可以使用低级 DataflowClient。您还需要jobId,它可以从DataflowPipelineJob(Dataflow 的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

【讨论】:

  • 不幸的是,当管道从模板启动时,这不起作用。
  • @jkff 这对我不起作用。有其他解决方案吗?
  • 抱歉,我已经有几年没有参与 Dataflow 了。您可能想在 Apache Beam 用户@ 邮件列表中询问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
相关资源
最近更新 更多