我想使用一个键将多个RDD合并为一个。有没有一种有效的方法可以代替这样做多次?
例如:
Rdd_1 = [(0, a), (1, b), (2, c), (3, d)]
Rdd_2 = [(0, aa), (1, bb), (2, cc), (3, dd)]
Rdd_3 = [(0, aaa), (1, bbb), (2, ccc), (3, ddd)]
我希望输出看起来像
Rdd = [(0, a, aa, aaa), (1, b, bb, bbb), (2, c, cc, ccc), (3, d, dd, ddd)]
谢谢!
答案 0 :(得分:0)
为完整性起见,这里是join方法:
Rdd_1.join(Rdd_2).join(Rdd_3).map(lambda (x,y): (x,)+y[0]+(y[1],))
就效率而言,如果您对键上的每个rdd
进行显式分区(使用partitionBy
),则所有要连接的元组都将位于同一分区中,这将使其效率更高。 / p>