如何使用Java Beam SDK获取数据流作业的步骤详细信息?

时间:2017-10-12 14:13:48

标签: google-cloud-dataflow apache-beam

我正在使用Java Beam SDK进行数据流工作,com.google.api.services.dataflow.model.Job类提供有关特定作业的详细信息。但是,它没有提供任何方法/属性来获取数据流步骤信息,例如添加元素估计大小等。

enter image description here

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

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

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