当前位置: 首页 > 知识库问答 >
问题:

在火花中加入两个数据帧,只返回一个匹配

师曦
2023-03-14

我有两个这样的数据帧:

DF1:

id  |  name
---
1   |   abc

2   |   xyz

DF2:

id  |  course
---
1   |  c1

1   |  c2

1   |  c3

2   |  c1

2   |  c3

当我left_outer或内连接df1和df2时,我希望得到的数据帧如下:

id  | name |  course
--- 
1   | abc  | c1
---
2   | xyz  | c1
---

当我加入时,id 1是c1、c2还是c3并不重要;但我只需要一张唱片。

请让我知道如何才能在火花中实现这一点。

谢谢你,约翰

共有1个答案

叶卓君
2023-03-14

如何删除基于列id的所有重复记录,这将为每个唯一的id保留一条记录,然后将其与df1连接:

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

+---+----+------+
| id|name|course|
+---+----+------+
|  1| abc|    c1|
|  2| xyz|    c1|
+---+----+------+
 类似资料:
  • 我正在尝试连接到数据帧。它们看起来像这样 期望的最终目标是: 我一直试图使用pd.merge和。连接函数与on='外'设置不成功

  • 我正在实施一个项目,其中MySql数据被导入到hdfs使用sqoop。它有将近30张桌子。我通过推断模式和注册为临时表来读取每个表作为数据帧。我做这件事有几个问题...1.假设df1到df10的表需要实现几个连接。在MySQL中,查询将是而不是使用是否有其他连接所有数据帧有效地基于条件...

  • 我有两个具有经度和纬度值的数据帧,我想从数据帧#2中提取值(例如数据帧#2的第三列),这些值与数据帧1的列匹配...例如,数据帧1有两列(、),数据帧2有三列(、和一些值)...我想在数据帧1中添加第三列,其中的值对应于两个数据帧中两列完全匹配的值,类似于和...在、不匹配的对中,我希望添加,以便第三列(我要添加到数据。帧1)的长度为=。我尝试了merge函数,但在将的两列与的列进行匹配时遇到了困

  • 我想过滤掉具有“c2”列前3个字符的记录,无论是“MSL”还是“HCP”。 所以输出应该如下所示。 有谁能帮忙吗? 我知道df。过滤器($c2.rlike(“MSL”))--用于选择记录,但如何排除记录? 版本:Spark 1.6.2 Scala:2.10

  • 我有两个数据帧,希望比较它们并返回第一个数据帧(df1)中不在第二个数据帧(df2)中的行。我找到了一种比较它们并返回差异的方法,但无法找出如何只返回df1中缺失的部分。

  • 如何将数据帧中的数据写入到单个。拼花地板文件(两个数据 df.rdd.get1个分区 1个 如果我使用上述命令在HDFS中创建拼花文件,它将在HDFS中创建目录“payloads.parquet”,并在该目录中创建多个文件。拼花地板文件,元数据文件正在保存。 找到4项 如何将数据帧中的数据写入单个文件(两个数据 帮助将不胜感激。