Apache Flink - DataSet API - 如何将 n 个结果分组在一起
Apache Flink - DataSet API - How to group n results together
我们正在使用 Apache Flink(1.4.2) 进行批处理,出于性能原因,我们不想直接输出每个项目,而是希望在输出之前对 100 个项目进行分组。
如果我们要使用 DataStream API 我们将能够使用类似 tumbling 的东西 windows (https://ci.apache.org/projects/flink/flink-docs-release-1.5/dev/stream/operators/windows.html#tumbling-windows)
但是在做批处理的时候这个是不可用的
是否可以使用 DataSet Api 或通过一些组/化简功能来做到这一点?
如果记录可以任意批在一起,我不会使用 groupBy
、reduce
或 groupReduce
,因为它们会不必要地对 DataSet
进行洗牌和排序。
相反,您可以使用 MapPartitionFunction
将记录一起批量处理。 MapPartition
接收分区所有记录的迭代器,并可以通过收集器发出记录。因为它只是消费记录而不重组它们(洗牌,排序),所以效率很高。
我们正在使用 Apache Flink(1.4.2) 进行批处理,出于性能原因,我们不想直接输出每个项目,而是希望在输出之前对 100 个项目进行分组。
如果我们要使用 DataStream API 我们将能够使用类似 tumbling 的东西 windows (https://ci.apache.org/projects/flink/flink-docs-release-1.5/dev/stream/operators/windows.html#tumbling-windows)
但是在做批处理的时候这个是不可用的
是否可以使用 DataSet Api 或通过一些组/化简功能来做到这一点?
如果记录可以任意批在一起,我不会使用 groupBy
、reduce
或 groupReduce
,因为它们会不必要地对 DataSet
进行洗牌和排序。
相反,您可以使用 MapPartitionFunction
将记录一起批量处理。 MapPartition
接收分区所有记录的迭代器,并可以通过收集器发出记录。因为它只是消费记录而不重组它们(洗牌,排序),所以效率很高。