java - 如何获取管道中使用的所有 Apache Beam 指标的列表?

标签 java apache-beam dataflow

我正在尝试获取 Apache Beam 数据流管道中使用的所有指标的完整详尽列表。

我记得,从 1.x Java Dataflow SDK 升级到 Apache Beam Java SDK (v2.5) 后,我们注意到所有从 0 开始增加的计数器都没有得到报告。

我有这段代码可以从 PipelineResult 中提取所有指标,但是如果一个计数器从不递增,它就不会被列出。

public static ArrayList<String> getAggregationFields(PipelineResult pr) {
    MetricsFilter filter = MetricsFilter.builder().build();
    MetricQueryResults metricQueryResults = pr.metrics().queryMetrics(filter);

    Iterable<MetricResult<Long>> counters = metricQueryResults.getCounters();

    ArrayList<String> fieldNames = new ArrayList<>();
    for (MetricResult<Long> metricValue : counters) {
        fieldNames.add(metricValue.getName().getName());
    }
    return fieldNames;
}

总而言之,是否有可能获得所有计数器的列表?

最佳答案

docs for the queryMetrics method暗示无法保证为永远不会递增的计数器提供结果:

Note that runners differ in their support for committed and attempted values.

特别是对于 Dataflow,DataflowMetrics#queryMetrics 的实现让您看起来不太可能知道从未递增的计数器。该方法检索 MetricUpdate 列表,然后继续进行聚合和过滤。因此,非递增计数器不会返回任何 MetricUpdate 实例,因此不会出现在查询结果中。

不过,我之前对 Beam 的指标 API 没有太多经验,所以我可能不完全理解这里的可能性。

关于java - 如何获取管道中使用的所有 Apache Beam 指标的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54408077/

相关文章:

java - 绘制带有制表符和星号的 Java 圣诞树

java - 如何从 Android MediaImage 以 OUTPUT_IMAGE_FORMAT_RGBA_8888 格式创建位图?

google-cloud-dataflow - Beam/Dataflow设计模式可基于数据库查询来丰富文档

python - Dataflow Streaming 使用 Python SDK : Transform for PubSub Messages to BigQuery Output

python - 将 PCollection 分配回全局窗口

java - Java 的数据流编程 API?

java - 使用 Selenium Webdriver 时如何打开通常的 chrome 或 Firefox 窗口?

java - 从 Object[][] 转换为 ImageIcon

python-3.x - 如何在 Python 中将表行 PCollections 转换为键、值 PCollections?

python - 如何在 python apache beam 中的窗口中排序元素?