如何在PySpark中合并多功能RDD

时间:2018-07-18 19:40:31

标签: pyspark rdd

我想使用一个键将多个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)]

谢谢!

1 个答案:

答案 0 :(得分:0)

为完整性起见,这里是join方法:

 Rdd_1.join(Rdd_2).join(Rdd_3).map(lambda (x,y): (x,)+y[0]+(y[1],))

就效率而言,如果您对键上的每个rdd进行显式分区(使用partitionBy),则所有要连接的元组都将位于同一分区中,这将使其效率更高。 / p>