如何在 PySpark 中连接两个 RDD?
How to join two RDD's in PySpark?
我无法找到加入 PySpark 中的 RDD 以实现预期结果的正确方法。
Here is the first RDD:
+------+---+
| _1| _2|
+------+---+
|Python| 36|
| C| 6|
| C#| 8|
+------+---+
Here is the second RDD:
+------+---+
| _1| _2|
+------+---+
|Python| 10|
| C| 1|
| C#| 1|
+------+---+
Here is the result I want:
+------+---+---+
| _1| _2| _3|
+------+---+---+
|Python| 36| 10|
| C| 6| 1|
| C#| 8| 1|
+------+---+---+
我已经尝试了两个 RDD 之间的各种 .join()
和 .union()
变体,但无法正确处理,将不胜感激!
使用RDD
rdd1 = sc.parallelize([('python', 36), ('c', 6), ('c#', 8)])
rdd2 = sc.parallelize([('python', 10), ('c', 1), ('c#', 1)])
rdd1.join(rdd2).map(lambda x: (x[0], *x[1])).toDF().show()
+------+---+---+
| _1| _2| _3|
+------+---+---+
|python| 36| 10|
| c| 6| 1|
| c#| 8| 1|
+------+---+---+
有DF
df1 = rdd1.toDF(['c1', 'c2'])
df2 = rdd2.toDF(['c1', 'c3'])
rdd3 = df1.join(df2, on=['c1'], how='inner').rdd
我无法找到加入 PySpark 中的 RDD 以实现预期结果的正确方法。
Here is the first RDD:
+------+---+
| _1| _2|
+------+---+
|Python| 36|
| C| 6|
| C#| 8|
+------+---+
Here is the second RDD:
+------+---+
| _1| _2|
+------+---+
|Python| 10|
| C| 1|
| C#| 1|
+------+---+
Here is the result I want:
+------+---+---+
| _1| _2| _3|
+------+---+---+
|Python| 36| 10|
| C| 6| 1|
| C#| 8| 1|
+------+---+---+
我已经尝试了两个 RDD 之间的各种 .join()
和 .union()
变体,但无法正确处理,将不胜感激!
使用RDD
rdd1 = sc.parallelize([('python', 36), ('c', 6), ('c#', 8)])
rdd2 = sc.parallelize([('python', 10), ('c', 1), ('c#', 1)])
rdd1.join(rdd2).map(lambda x: (x[0], *x[1])).toDF().show()
+------+---+---+
| _1| _2| _3|
+------+---+---+
|python| 36| 10|
| c| 6| 1|
| c#| 8| 1|
+------+---+---+
有DF
df1 = rdd1.toDF(['c1', 'c2'])
df2 = rdd2.toDF(['c1', 'c3'])
rdd3 = df1.join(df2, on=['c1'], how='inner').rdd