【问题标题】:How to get a dataflow job's step details using Java Beam SDK?如何使用 Java Beam SDK 获取数据流作业的步骤详细信息?
【发布时间】:2017-10-12 14:13:47
【问题描述】:

我将 Java Beam SDK 用于我的数据流作业,com.google.api.services.dataflow.model.Job 类提供了有关特定作业的详细信息。但是,它没有提供任何方法/属性来获取数据流步骤信息,例如 Elements added、Estimated Size 等。

下面是我用来获取工作信息的代码,

PipelineResult result = p.run();        
String jobId = ((DataflowPipelineJob) result).getJobId();
DataflowClient client = DataflowClient.create(options);
Job job = client.getJob(jobId);

我正在寻找类似的东西,

job.getSteps("step name").getElementsAdded();
job.getSteps("step name").getEstimatedSize();

提前致谢。

【问题讨论】:

    标签: google-cloud-dataflow apache-beam


    【解决方案1】:

    SinkMetrics 类提供了一个bytesWritten() 方法和一个elementsWritten() 方法。此外,SourceMetrics 类提供了elementsRead() 和bytesRead() 方法。

    如果您使用 org.apache.beam.sdk.metrics 包中的类来查询这些指标并逐步过滤,您应该能够获取停靠点的基础指标(即,读取的元素)。

    我要补充一点,如果您愿意在 Beam Java SDK 之外查看,因为您在 Google Cloud Dataflow 上运行,您可以使用 Google Dataflow API 特别是,您可以使用 projects.jobs.getMetrics 来获取详细信息作业的指标,包括写入/读取的元素数量。您将需要对指标进行一些解析,因为即使是一项简单的工作也有数百个指标,但是您正在寻找的基础数据是通过此 API 调用提供的(我刚刚测试过)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      相关资源
      最近更新 更多