apache flink-dataset api-如何将n个结果组合在一起

lxkprmvk  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(450)

我们使用ApacheFlink(1.4.2)进行批处理,出于性能原因,我们不想直接输出每个项目,而是希望在输出之前将100个项目分组。
如果我们使用datastreamapi,我们就可以使用类似于翻滚窗口的东西(https://ci.apache.org/projects/flink/flink-docs-release-1.5/dev/stream/operators/windows.html#tumbling-窗口)
但这在进行批处理时不可用。
是否可以使用数据集api或者通过某个group/reduce函数来实现这一点?

d7v8vwbk

d7v8vwbk1#

如果记录可以任意批在一起,我就不用了 groupBy , reduce ,或 groupReduce 因为他们会不必要地洗牌和分类 DataSet .
相反,你可以使用 MapPartitionFunction 将记录批处理在一起。一 MapPartition 接收分区所有记录的迭代器,并可以通过收集器发出记录。因为它只消耗记录而不重新组织它们(洗牌、排序),所以它非常高效。

相关问题