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

如何在spark java中删除左外连接后的DataFrame中的重复记录

贾俊艾
2023-03-14

输入数据如下inpu1为{col1:“val1”,col2:“val2”,col3:“val3”,.....}输入2为acctno^^email_id我正在执行左外部联接以联接此2数据集,并给出最后的输出为{col1:“val1”,col2:“val2”,col3:“val3”,col4:email_id}请查找下面我迄今为止所做的代码片段。

DataFrame DF1 = sqlCtx.jsonRDD(JSONRDD1);
DF1.registerTempTable("DCP");

DataFrame DF2 = sqlCtx.read().json(inputPath1);
DF2.registerTempTable("IDN");

String joinSQL = "SELECT  i.col1,i.col2,i.col3,d.email_id from " IDN i LEFT OUTER JOIN DCP d ON i.col1 = d.acctno ";
DataFrame  joinedDF = sqlCtx.sql(joinSQL);
joinedDF.repartition(1).toJSON().saveAsTextFile("outputpath");

但是最终输出有重复的记录,这是不需要的。我想删除重复的记录。为了删除重复的记录,我在joinedDF上尝试了distinct()和dropDuplicates(),但是它不能删除重复的记录,并且输出有重复的记录。

共有1个答案

弓胜泫
2023-03-14

在accntno中可能有一些重复项。如果col1在accntno中发现重复项,可能会影响所需的记录。只考虑不同的accntno和do join。

 类似资料:
  • 我正在将数据库从MySQL切换到Postgres SQL。在MySQL中有效的select查询在Postgres中也有效,但类似的delete查询却不能。 我有两个数据表,列出了某些备份文件的位置。现有数据(ed)和新数据(nd)。此语法将挑选出可能说明文件在现有数据表中的位置的现有数据,根据相等的文件名和路径对其进行匹配,但没有关于文件在新数据中的位置的信息: 我希望使用以下语法运行删除查询:

  • 问题内容: 嗨,在这里我遇到了一种情况,即由于错误地没有删除表,我已经运行了该表的批处理文件,该文件由一些详细的插入语句组成 我有一个像alert_priority的表由类似 现在错误地没有删除 alert_priority 我已经执行了表的脚本文件,其中包含一些插入语句,现在执行脚本后,我在表中的记录就像 现在,我想删除多余的记录(Id 3之后的记录),并且在执行脚本文件之前,我应该拥有所有存在

  • 这是我的原始表格: 预期表: 我无法向表中添加新列。

  • 问题内容: 使用rails或mysql查询删除mysql数据库中重复记录的最佳方法是什么? 问题答案: 您可以通过以下方式将不同的记录复制到新表中:

  • 本文向大家介绍sql 删除表中的重复记录,包括了sql 删除表中的重复记录的使用技巧和注意事项,需要的朋友参考一下 遇见了表中存在重复的记录的问题,直接写sql删除时最快的,才不要慢慢的复制到excel表中慢慢的人工找呢 如下sql,找出重复的记录,和重复记录中ID值最小的记录(表中ID为自增长) 然后就可以直接删除,基本原理就是,找到重复记录的每一条记录,排除掉重复id最小的记录,删除剩余的重复

  • 我有一个包含多个选项的Select标记。在按钮上,单击每个选择的选项创建一个li,其中innerText设置为该选项的文本值。我怎么做一个函数,我不能添加相同的元素两次? 这是我在jQuery中的代码。这是fiddle=>https://jsfiddle.net/nah062ck/11/上的示例