我正在使用Aggregator
来记录数据流作业的一些运行时统计信息,我想在管道完成时(或每个变换器完成)将它们刷新到GCS或BQ。
目前,我正在通过使用Aggregator
来同时利用tupleTag创建侧输出并刷新侧输出PCollection。
但是我想知道是否可以通过任何其他方便的方式直接刷新聚合器本身?
答案 0 :(得分:2)
使用侧输出PCollection的方法应该使用聚合器产生语义上等效的结果。 (例如,当捆绑包失败并且必须重试时,聚合器和侧输出都不会包含重复值。)主要区别在于聚合器的部分结果在监视UI中的流水线执行期间以编程方式可用。
在Java中,您可以使用PipelineResult.getAggregatorValues()。如果从[非阻塞] DataflowPipelineRunner
获取PipelineResult,则可以在作业运行时查询聚合器。如果您使用BlockingDataflowPipelineRunner
,Pipeline.run()
块,则在作业完成之前您将无法获得PipelineResult。
还有commandline支持:gcloud alpha dataflow metrics tail JOB_ID