2017-10-12 23 views
3

我正在为我的数据流作业使用Java Beam SDK,而com.google.api.services.dataflow.model.Job类提供了有关特定作业的详细信息。然而,它不提供任何方法/属性来获取数据流步骤的信息,例如元素的加入估计大小如何使用Java Beam SDK获取数据流作业的步骤详细信息?

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

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

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

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

相关问题