在 pyspark 中合并两个 RDD
Posted
技术标签:
【中文标题】在 pyspark 中合并两个 RDD【英文标题】:Combine two RDDs in pyspark 【发布时间】:2016-01-29 13:21:22 【问题描述】:假设我有以下 RDD:
a = sc.parallelize([1, 2, 5, 3])
b = sc.parallelize(['a','c','d','e'])
如何将这 2 个 RDD 合并为一个 RDD,如下所示:
[('a', 1), ('c', 2), ('d', 5), ('e', 3)]
使用a.union(b)
只是将它们组合在一个列表中。有什么想法吗?
【问题讨论】:
【参考方案1】:您可能只想 b.zip(a)
两个 RDD(注意颠倒的顺序,因为您想按 b 的值作为键)。
请仔细阅读python docs:
zip(其他)
用另一个 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)]
【讨论】:
如果你有两个不同数量的元素和分区的 RDD,你会怎么做? 取决于用例。有一件事是肯定的——你需要一些你想要加入的钥匙。然后你可以继续,例如。 reduceByKey 或加入,就像本章一样 - safaribooksonline.com/library/view/learning-spark/9781449359034/…以上是关于在 pyspark 中合并两个 RDD的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS Glue pyspark 脚本中合并两个节点