首页 > 解决方案 > Apache Flink - DataSet API - 如何将 n 个结果组合在一起

问题描述

我们正在使用 Apache Flink(1.4.2) 进行批处理,出于性能原因而不是直接输出每个项目,我们希望在输出之前对 100 个项目进行分组。

如果我们要使用 DataStream API,我们将能够使用像翻滚窗口这样的东西(https://ci.apache.org/projects/flink/flink-docs-release-1.5/dev/stream/operators/windows.html #翻滚窗口

但这在进行批处理时不可用。

是否可以通过一些组/减少功能使用 DataSet Api 来做到这一点?

标签: batch-processingapache-flink

解决方案


如果记录可以任意批处理在一起,我不会使用groupBy, reduce,或者groupReduce因为它们会不必要地对DataSet.

相反,您可以使用 aMapPartitionFunction来批处理记录。AMapPartition在分区的所有记录上接收迭代器,并可以通过收集器发出记录。由于它只是使用记录而不重新组织它们(随机排序、排序),因此它非常有效。


推荐阅读