首页 文章

如何在spark java中的Left outer join之后从DataFrame中删除重复记录

提问于
浏览
0

输入数据如下inpu1为{col1:“val1”,col2:“val2”,col3:“val3”,.....} input2为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(),但它无法删除重复记录,并且输出具有重复记录 .

Input1有4897条记录,input2有2198765条记录 . 最终输出应该有4897条记录,但就我而言,它是5101条记录 . 我是使用Java的Spark编程的新手 . 请帮我解决上面的重复记录问题 .

1 回答

  • 0

    在accntno中可能有一些重复 . 如果col1在accntno中找到重复项,则可能会影响所需的记录 . 只考虑不同的accntno并加入 .

相关问题