Spark:合并两个数据帧,如果两个数据帧中的ID重复,则df1中的行覆盖df2中的行

2023-12-30

有两个数据帧: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 具有相同的架构,您可以简单地合并df1left_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(使用前将#替换为@)

Spark:合并两个数据帧,如果两个数据帧中的ID重复,则df1中的行覆盖df2中的行 的相关文章

随机推荐

  • 哪个分布式缓存?

    我需要找到一种方法让两个应用程序可以使用相同的缓存 经过一些快速研究后 我们似乎需要一个分布式缓存来实现这一点 进一步谷歌搜索发现了许多解决方案 NCache http www alachisoft com ncache ncache ex
  • 如何在输入特定单词时提醒用户

    我是 Javascript 新手 正在创建我的第一个 Chrome 扩展 这实际上只是一个个人挑战 我想在用户在任何网站上键入某些单词时提醒他们 也许是 Google 或 Bing 上的搜索输入字段 或者也许是当他们输入 Facebook
  • 嵌入式 Linux 上的 QT5 eglfs(TI am355x EVM 入门套件)

    我刚刚为 ARM 交叉编译了 QT 5 2 1 并在 TI AM335x EVM 入门套件 板上使用它 我想使用eglfs平台 但不幸的是它在屏幕上显示了一些伪影 我只是制作了一个简单的程序来显示问题并捕获了我的屏幕的一些照片 该程序基本上
  • 真的很简单的Python HTTP代理吗? [复制]

    这个问题在这里已经有答案了 我到处寻找并发现了数百万个 python 代理服务器 但没有一个完全符合我的要求 我认为 s 一般来说 我对 python 有相当多的经验 但我对 HTTP 协议的深层秘密世界还很陌生 我认为可能有用的是一个非常
  • MVC-4 文件上传成功消息

    我在上传文件后显示成功消息时遇到了一些问题 我首先尝试使用 ViewBag Message 它运行良好 并在文件上传后显示成功消息 这就是我想要的 但后来我找不到一种方法 几秒钟后将该消息更改回 选择要上传的文件 以便用户了解他现在可以上传
  • 可以在 Twilio 中保存短信并安排发送吗?如果没有,我该如何完成这件事?

    我刚刚注册了 Twilio 试用帐户 我没有看到任何功能说明如何创建和保存多条短信供以后使用以及安排何时将它们发送到群组 这可能吗 或者有没有更好的软件可以做到这一点 Twilio 传道者在这里 查看您的个人资料 您的首选语言似乎是 PHP
  • “For”循环第一次迭代

    我想询问是否有一种优雅的 pythonic 方式在第一次循环迭代中执行某些函数 我能想到的唯一可能性是 first True for member in something get if first root copy member fir
  • 使用 CMake 和 GCC 4.1.2 链接到 stdc++

    我正在开发一个库 需要确保它可以使用 4 1 2 进行编译 我知道 它没有给我带来任何乐趣 因此 我在 Fedora 14 机器上下载 编译并安装了 GCC41 现在在 CMake 中我只将以下内容更改为变量 CMAKE CXX COMPI
  • JDBC 调用以数组为参数的存储过程

    我正在尝试使用 java 代码调用下面的过程 但我收到了几个错误 主要是类型转换 我想我在某个地方搞砸了 有人可以看一下吗 这是我第一次这样做 一点帮助就太好了 proc DECLARE car details tab car detail
  • 如何检查对象以查看其类型并返回强制转换的对象

    我有向其传递对象的方法 在这个方法中 我检查它的类型 并根据类型对它执行一些操作并返回一个 Long 我已经尝试了所有我能想到的方法来做到这一点 但我总是收到几个编译器错误 告诉我它需要某个对象 但得到另一个对象 有人可以向我解释我做错了什
  • .NET Parallel.Foreach 如何构造 IO 密集型操作

    比方说 我编写了一个程序 该程序应该读取给定的所有文本文件并从中生成对象列表 所以步骤是 从磁盘读取给定文件夹中所有文件的文件内容 每个文件内容创建唯一的对象 我想知道 NET 中的 Parallel ForEach 或任何其他并行结构 是
  • 如何使用 C# 任务并行库和 IProducerConsumerCollection 实现通用回调?

    我有一个向基于 Web 的 API 提交请求的组件 但必须限制这些请求 以免违反 API 的数据限制 这意味着所有请求必须通过队列来控制它们的提交速率 但它们可以 并且应该 并发执行以实现最大吞吐量 每个请求必须在将来完成时的某个时刻向调用
  • ActionBarSherlock (ABS):如何自定义操作模式关闭项的文本?

    我正在使用 ABS 版本 4 我需要简单地更改除了操作模式关闭图标之外显示的默认 完成 文本 但我真的不知道该怎么做 我认为文本需要可定制 至少有两个充分的理由 完成 并不适合所有情况 例如 取消 可能更合适 我见过一些应用程序 例如 Ga
  • 使用 Devise 和 Rails Admin 对特定路由进行身份验证

    我使用 Rails Admin 和 Devise 来管理和用户模型 我已向用户模型添加了一列 admin 以指示其身份 In the config routes rb 我安装 admin for RailsAdmin Engine 我只想允
  • 在 C# NET 中检测应用程序关闭?

    我正在编写一个小型控制台应用程序 将作为服务运行 它基本上在运行时启动 Java 应用程序 如果 Java 应用程序关闭则自行关闭 如果 Java 应用程序关闭则关闭 Java 应用程序 我认为前两个工作正常 但我不知道如何检测 NET 应
  • Angular - 使用组件选择器作为属性会让 tslint 生气

    我正在尝试创建一个具有属性作为选择器的组件 如下所示 Component selector my attribute selector template export class MyComponent Some cool stuff 然而
  • AQL 查询返回 Promise

    我一直在尝试使用肥皂消息从 Arangodb 获取查询结果到我的前端服务 Angular 4 我能够获得查询结果 但在 console log 中打印出来 但是我怎样才能在这个函数 myService 下得到它呢 换句话说 如何将查询结果输
  • Excel 2016:在单元格中搜索多个术语

    我正在尝试在 Excel 2016 中使用 OR 条件在单元格中搜索多个字符串 例如 我有一根绳子abcd1234我想找到ab OR 12 我正在使用德语版本 该功能SEARCH叫做SUCHEN它的行为方式应该相同 I found 这个答案
  • oplog 在独立 mongod 上启用,不适用于副本集

    我正在将 mongod 作为独立服务器运行 现在我想为其启用 oplog 我想知道这是否可能 我知道我可以通过创建单节点 ReplicaSet 来做到这一点 但我想在没有副本集的情况下做到这一点 我收到了 MongoDb 团队的回复 一切正
  • Spark:合并两个数据帧,如果两个数据帧中的ID重复,则df1中的行覆盖df2中的行

    有两个数据帧 df1 和 df2 具有相同的架构 ID 是主键 我需要合并两个 df1 和 df2 这可以通过以下方式完成union但有一个特殊要求 df1 和 df2 中是否存在具有相同 ID 的重复行 我需要将其保留在 df1 中 df