在pyspark中组合两个RDD

Mpi*_*ris 3 apache-spark rdd pyspark

假设我有以下 RDD:

a = sc.parallelize([1, 2, 5, 3])
b = sc.parallelize(['a','c','d','e'])
Run Code Online (Sandbox Code Playgroud)

我如何将这 2 个 RDD 组合成一个 RDD,如下所示:

[('a', 1), ('c', 2), ('d', 5), ('e', 3)]
Run Code Online (Sandbox Code Playgroud)

使用a.union(b)just 将它们组合在一个列表中。任何的想法?

Nie*_*and 5

您可能只想要b.zip(a)两个 RDD(注意相反的顺序,因为您想按 b 的值作为键)。

只需仔细阅读python 文档

拉链(其他)

用另一个 RDD 压缩这个 RDD,返回每个 RDD 中第一个元素的键值对,每个 RDD 中的第二个元素,等等。假设两个 RDD 具有相同数量的分区,并且每个分区中的元素数量相同(例如一个是通过另一张地图制作的)。

x = sc.parallelize(range(0,5))
y = sc.parallelize(range(1000, 1005))
x.zip(y).collect()
[(0, 1000), (1, 1001), (2, 1002), (3, 1003), (4, 1004)]
Run Code Online (Sandbox Code Playgroud)