Apache spark 在pyspark中合并两个RDD
假设我有以下RDD:Apache spark 在pyspark中合并两个RDD,apache-spark,pyspark,rdd,Apache Spark,Pyspark,Rdd,假设我有以下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)只需将它们组合在一个列表中。有什么想法吗?您可能只想b.zip(a)两个RDD(注意顺序相反,因为您想按b的值进行键控) 请仔细阅读以下内容: 拉链(其他) 用另一个RDD压缩此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)
只需将它们组合在一个列表中。有什么想法吗?您可能只想b.zip(a)
两个RDD(注意顺序相反,因为您想按b的值进行键控)
请仔细阅读以下内容:
拉链(其他)
用另一个RDD压缩此RDD,并用返回键值对
每个RDD中的第一个元素每个RDD中的第二个元素等
两个RDD具有相同数量的分区和相同的
每个分区中的元素数(例如,一个元素是通过地图生成的
另一方面)
如果您有两个具有不同元素和分区数量的RDD,您将如何做到这一点?取决于用例。有一件事是肯定的——你需要一些你想要加入的密钥。然后,你可以继续进行如reduceByKey或join,如本章所述-
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)]