有两个数据帧: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 具有相同的架构,您可以简单地合并df1
与left_anti
加入...的df2
& df1
:
df1.union(df2.join(df1, Seq("ID"), "left_anti")).show
// +---+---+----+
// | ID|co1|col2|
// +---+---+----+
// | 1| AA|2019|
// | 2| B|2018|
// | 3| C|2017|
// +---+---+----+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)