BAE*_*BAE 2 scala dataframe apache-spark apache-spark-sql
有两个数据帧:df1 和 df2 具有相同的架构。ID 是主键。
我需要合并两个 df1 和 df2。这可以通过union除了一个特殊要求来完成:如果 df1 和 df2 中存在具有相同 ID 的重复行。我需要将那个保留在 df1 中。
df1:
ID col1 col2
1 AA 2019
2 B 2018
Run Code Online (Sandbox Code Playgroud)
df2:
ID col1 col2
1 A 2019
3 C 2017
Run Code Online (Sandbox Code Playgroud)
我需要以下输出:
df1:
ID col1 col2
1 AA 2019
2 B 2018
3 C 2017
Run Code Online (Sandbox Code Playgroud)
这该怎么做?谢谢。我认为可以注册两个 tmp 表,进行完全连接并使用coalesce. 但我不喜欢这种方式,因为实际上大约有 40 列,而不是上面示例中的 3 列。
鉴于两个 DataFrame 具有相同的架构,您可以简单地df1与&的left_anti连接合并:df2df1
df1.union(df2.join(df1, Seq("ID"), "left_anti")).show
// +---+---+----+
// | ID|co1|col2|
// +---+---+----+
// | 1| AA|2019|
// | 2| B|2018|
// | 3| C|2017|
// +---+---+----+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1547 次 |
| 最近记录: |