假设我有以下RDD:
a = sc.parallelize([1, 2, 5, 3])
b = sc.parallelize(['a','c','d','e'])
如何将这两个RDD组合成一个RDD,如下所示:
[('a', 1), ('c', 2), ('d', 5), ('e', 3)]
使用a.union(b)
只是将它们组合在一个列表中。有什么想法吗?
答案 0 :(得分:4)
您可能只想b.zip(a)
两个RDD(请注意相反的顺序,因为您想要按b的值键入)。
请仔细阅读python docs:
<强>拉链(其他)强>
将此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)]