将每个元素视为元组时,在 PySpark 中加入 2 个 RDD

Posted

技术标签:

【中文标题】将每个元素视为元组时,在 PySpark 中加入 2 个 RDD【英文标题】:join 2 RDD in PySpark when treating every element as a tuple 【发布时间】:2015-06-22 03:24:42 【问题描述】:

我不知道如何准确地描述它,但例子是:

给出两个 RDD:

x = sc.parallelize([("a", 1), ("b", 4)])

y = sc.parallelize([("a", 2), ("c", 8)])

,我想得到结果:

[(("a", 1), ("a", 2)), (("a", 1), ("c", 8)), (("b", 4), ("a", 2)), (("b", 4), ("c", 8))]

PySpark document 中的 join 转换似乎不适用于此示例。

所以我想问一下我可以使用什么样的转换来获得预期的结果?谢谢!

【问题讨论】:

这篇文章没有直接回答你的问题,但它可能会有所帮助。按照赵振杰的回答——笛卡尔:link 【参考方案1】:

阅读spark document后,我发现一种方法是:

x.cartesian(y)

【讨论】:

【参考方案2】:

由于 RDD 有一些模仿 SQL 的操作,SparkContext.union() 不是您要找的吗?

【讨论】:

以上是关于将每个元素视为元组时,在 PySpark 中加入 2 个 RDD的主要内容,如果未能解决你的问题,请参考以下文章

将列表转换为数据框,然后在 pyspark 中加入不同的数据框

如何在pyspark中加入具有多个重叠的两个数据框

如何避免pyspark中加入操作中的过度洗牌?

在pyspark中加入具有相同列名的数据框

在 PySpark 中加入多个列

在 PySpark 中加入 270 列