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

Vij*_*raj 5 google-cloud-dataflow apache-beam

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

在此输入图像描述

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

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

我在找类似的东西,

job.getSteps("step name").getElementsAdded();
job.getSteps("step name").getEstimatedSize();
Run Code Online (Sandbox Code Playgroud)

提前致谢.

eb8*_*b80 2

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

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

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