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

时间:2017-02-12 17:09:44

标签: java sql apache-spark dataframe

输入数据如下inpu1 as {COL1: “VAL1”,COL2: “值2”,COL3: “VAL3”,...} input2 as 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 :(得分:0)

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