大家好,
假设我想连接以下两个Dataframe,以便df2的一行在连接中与df1中具有相同id的每一行重复:
df1 = sc.parallelize(Array((0, 1.5, 8.4, 9.1),
(0, 5.9, 1.3, 3.3),
(0, 3.2, 7.9, 4.2),
(0, 6.9, 2.2, 1.2)))
.toDF("id", "col1", "col2", "col3")
df2 = sc.parallelize(Array((0, 2.1, 3.4, 4.2)))
.toDF("id", "col4", "col5", "col6")
预期结果如下:
df_joined.show()
+---+-----+-----+-----+----+-----+-----+
| id| col1|col2 |col3 |col4|col5 |col6 |
+---+-----+-----+-----+----+-----+-----+
| 0| 1.5| 8.4| 9.1| 2.1| 3.4| 4.2|
| 0| 5.9| 1.3| 3.3| 2.1| 3.4| 4.2|
| 0| 3.2| 7.9| 4.2| 2.1| 3.4| 4.2|
| 0| 6.9| 2.2| 1.2| 2.1| 3.4| 4.2|
+---+-----+-----+-----+----+-----+-----+
我尝试了所有的外部连接,以及 crossJoin
这是两个df之间的笛卡尔积,但不起作用。一个简单的解决方案是只复制df2的行(对应的id在df1中出现的次数),然后执行一个普通的外部连接,但是我认为必须有一种方法通过使用连接来获得所需的结果。
谢谢你的帮助。
1条答案
按热度按时间pgky5nke1#
我想你可以加入
id
: