从多个列的临时表中选择重复项

时间:2016-05-02 06:59:29

标签: scala apache-spark dataframe apache-spark-sql

我将一个JSON文件加载到Spark Cluster中。我想基于几列来识别所有重复记录并将它们写入RDD。我尝试使用Spark SQL但无法完成任务。

2 个答案:

答案 0 :(得分:0)

通过识别重复项,我不明白你的意思。如果您提到的数据是基于架构的,可以从Spark SQL获得帮助。如果您只想从组中删除重复项,请将其转换为DataFrame并尝试以下操作。 df.dropDuplicates(List("colA" , "colB"))

答案 1 :(得分:0)

假设您有两列(“column1”和“column2”)可用于查找记录是否重复,您可以尝试以下操作(使用Spark SQL):

rgb( 255   ,   0 ,0)

如果您需要所有列,则可以将结果数据框与原始数据结合使用:

val newData = data
  .groupBy("column1", "column2")
  .agg(count("*").as("cnt"))
  .where(col("cnt") > 1)

修改

或者,如果您有HiveContext,则可以使用窗口函数:

val finalData = newData.join(data, Seq("column1", "column2"))