【发布时间】: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