假设我有2个包含PairRDD [(Int,Int)]的分区,数据被分区为;
P1 => (1,1),(1,2),(2,2)
P2 => (1,3),(2,3),(2,4)
如果我在PairRDD [(Int,Int)]上运行reduceByKey((n1,n2)=> n1 + n2));
我能得到吗?
P1 => (1,3),(2,2)
P2 => (1,3),(2,7)
或
P1 => (1,6)
P2 => (2,9)
换句话说,reduceByKey是否保持RDD的分区相同? 或者在标题中,reduceByKey是否按分区工作?
答案 0 :(得分:1)
ReduceByKey会给你结果(1,6)和(2,9)。按键减少将首先在每个分区中组合结果,然后将数据混洗以全局组合。
我不确定你想要理解什么,但是,有一篇很好的文章提供了关于改组的细节,这解释了关于数据混乱的一些重要事项。
您可以查看here