gpt4 book ai didi

scala - spark : merge two dataframes, 如果 ID 在两个数据帧中重复,df1 中的行将覆盖 df2 中的行

转载 作者:行者123 更新时间:2023-12-02 16:52:38 25 4
gpt4 key购买 nike

有两个数据帧:df1 和 df2 具有相同的架构。 ID为主键。

我需要合并两个 df1 和 df2。这可以通过 union 完成,但有一个特殊要求:如果 df1 和 df2 中存在具有相同 ID 的重复行。我需要将那个保留在 df1 中。

df1:

ID col1 col2
1 AA 2019
2 B 2018

df2:

ID col1 col2
1 A 2019
3 C 2017

我需要以下输出:

df1:

ID col1 col2
1 AA 2019
2 B 2018
3 C 2017

如何做到这一点?谢谢。我认为可以注册两个 tmp 表,进行完全连接并使用 coalesce。但我不喜欢这种方式,因为实际上有大约 40 列,而不是上面示例中的 3 列。

最佳答案

鉴于这两个 DataFrame 具有相同的架构,您可以简单地将 df1df2df1 的 left_anti 连接合并:

df1.union(df2.join(df1, Seq("ID"), "left_anti")).show
// +---+---+----+
// | ID|co1|col2|
// +---+---+----+
// | 1| AA|2019|
// | 2| B|2018|
// | 3| C|2017|
// +---+---+----+

关于scala - spark : merge two dataframes, 如果 ID 在两个数据帧中重复,df1 中的行将覆盖 df2 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com