在 spark 中加入两个数据帧以仅返回一个匹配项

Joh*_*ohn 4 scala join dataframe apache-spark

我有两个这样的数据框:

DF1:

id  |  name
---
1   |   abc

2   |   xyz
Run Code Online (Sandbox Code Playgroud)

DF2:

id  |  course
---
1   |  c1

1   |  c2

1   |  c3

2   |  c1

2   |  c3
Run Code Online (Sandbox Code Playgroud)

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

id  | name |  course
--- 
1   | abc  | c1
---
2   | xyz  | c1
---
Run Code Online (Sandbox Code Playgroud)

我加入时id 1是c1,c2还是c3都没有关系;但我只需要一张唱片。

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

谢谢,约翰

Psi*_*dom 5

如何根据列删除所有重复记录,该列id将为每个唯一记录仅保留一条记录id,然后将其加入df1

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

+---+----+------+
| id|name|course|
+---+----+------+
|  1| abc|    c1|
|  2| xyz|    c1|
+---+----+------+
Run Code Online (Sandbox Code Playgroud)