如何在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)]

谢谢!

为了完整起见,这里是连接方法:

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

就效率而言,如果显式地对密钥上的每个rdd进行分区(使用partitionBy(,那么所有要连接的元组都将位于同一分区中,这将使其更有效率。

最新更新