kick: mappartition(parallel) + iterable(seq) vs while(seq)+map(parallel)

spark: mappartition (parallel) + iterable (seq) vs while (seq) + map (parallel)

我有以下困境

我玩 RDD[(key0, data),(key1, data),(key0, data),..] 我需要先用相似的键聚合所有数据,然后再按键

处理它们

第一个想法是迭代所有不同的键,并且对于每个键,检索(过滤)使用相同键映射的所有数据。通过这种方式,我仍然可以对结果结构执行并行操作( RDD),但是如果有很多键(多次迭代)效率低下..

第二个想法是使用自定义分区器对数据进行分区(与不同的键一样多的分区)。然后,做一个 mappartition。但是,在每个分区内,我们只能顺序处理数据(Iterable。 ..).. 数据多效率低下..

有什么想法吗?或者是否存在第三个神奇的想法? 谢谢

该问题缺乏确定所需的详细程度,但看起来 rdd.reduceByKey(aggregation)rdd.aggregateByKey(zero)(aggregator,reducer) 可以满足需要。

感谢您的帮助..

因此,通过在同一集合(缓冲区、列表、...)中(按键)聚合数据, 我可以对它们进行回归。但是生成的集合可能太大而无法驻留在单个节点上