【问题标题】:How to remove duplicate records from DataFrame after Left outer join in spark java如何在火花java中的左外连接后从DataFrame中删除重复记录
【发布时间】:2017-06-30 15:29:04
【问题描述】:

输入数据如下 inpu1 为 {col1:"val1",col2:"val2",col3:"val3",.....} 输入2作为 帐号^^email_id 我正在做左外连接来加入这 2 个数据集并将最终输出作为 {col1:"val1",col2:"val2",col3:"val3",col4:email_id} 请找到我到目前为止所做的以下代码sn-p。

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 编程的新手。请帮助我解决上述重复记录问题。

【问题讨论】:

  • 你不能在查询中只做SELECT DISTINCT吗?
  • 我已经尝试过了..但它并没有解决我的目的......仍然输出有重复的记录。

标签: java sql apache-spark dataframe


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-07-25
    • 2018-09-19
    • 2021-03-20
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2018-05-23
    • 2019-10-08
    相关资源
    最近更新 更多