在spark中加入两个数据帧只返回一个匹配

时间:2017-01-13 20:13:52

标签: scala join apache-spark dataframe

我有两个这样的数据框:

DF1:

id  |  name
---
1   |   abc

2   |   xyz

DF2:

id  |  course
---
1   |  c1

1   |  c2

1   |  c3

2   |  c1

2   |  c3

当我执行df1和df2的left_outer或内连接时,我希望结果数据帧为:

id  | name |  course
--- 
1   | abc  | c1
---
2   | xyz  | c1
---

当我加入时,对于id 1是c1,c2还是c3并不重要;但我只需要一条记录。

请让我知道如何在火花中实现这一点。

谢谢, 约翰

1 个答案:

答案 0 :(得分:3)

如何根据列id删除所有重复记录,这样只会为每个唯一id保留一条记录,然后将其与df1一起加入:

df1.join(df2.dropDuplicates(Seq("id")), Seq("id"), "inner").show

+---+----+------+
| id|name|course|
+---+----+------+
|  1| abc|    c1|
|  2| xyz|    c1|
+---+----+------+