在 python 中的管道 运行 期间访问 Apache Beam 指标值?
Access Apache Beam metrics values during pipeline run in python?
我正在使用 Apache Beam Python SDK 的直接 运行ner 来执行类似于字数统计示例的简单管道。由于我正在处理一个大文件,我想在执行期间显示指标。我知道如何报告指标,但我找不到在 运行.
期间访问指标的任何方法
我在 PipelineResult
中找到了 metrics()
函数,但似乎我只从 Pipeline.run()
函数中得到了一个 PipelineResult
对象,这是一个阻塞调用。在 Java SDK 中我找到了一个 MetricsSink
,它可以在 PipelineOptions
上配置,但我在 Python SDK 中没有找到一个等价物。
如何在管道执行期间访问实时指标?
direct runner 通常用于测试、开发和小型作业,Pipeline.run()
为简单起见被阻塞。在其他运行器上 Pipeline.run()
是异步的,结果可用于在执行期间监视管道进度。
您可以尝试 运行 像 Flink 这样的 OSS runner 的本地版本来获得这种行为。
这似乎适用于 DirectRunner:
counters = result.metrics().query(beam.metrics.MetricsFilter())['counters']
for metric in counters:
print(metric)
我正在使用 Apache Beam Python SDK 的直接 运行ner 来执行类似于字数统计示例的简单管道。由于我正在处理一个大文件,我想在执行期间显示指标。我知道如何报告指标,但我找不到在 运行.
期间访问指标的任何方法我在 PipelineResult
中找到了 metrics()
函数,但似乎我只从 Pipeline.run()
函数中得到了一个 PipelineResult
对象,这是一个阻塞调用。在 Java SDK 中我找到了一个 MetricsSink
,它可以在 PipelineOptions
上配置,但我在 Python SDK 中没有找到一个等价物。
如何在管道执行期间访问实时指标?
direct runner 通常用于测试、开发和小型作业,Pipeline.run()
为简单起见被阻塞。在其他运行器上 Pipeline.run()
是异步的,结果可用于在执行期间监视管道进度。
您可以尝试 运行 像 Flink 这样的 OSS runner 的本地版本来获得这种行为。
这似乎适用于 DirectRunner:
counters = result.metrics().query(beam.metrics.MetricsFilter())['counters']
for metric in counters:
print(metric)