0%

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;单纯的对Dataset去重可以采用spark的API中的dropDuplicate()方法以及可以指定列名的4个重载方法:dropDuplicates(scala.collection.Seq<String> colNames)dropDuplicates(String[] colNames)dropDuplicates(String col1, scala.collection.Seq<String> cols)dropDuplicates(String col1, String... cols),返回值都是去重后的新的Dataset。但是有时候我们需要根据指定列去重后保留最后一条数据,采用dropDuplicate()方法就无法实现了。这时候我们可以将指定的列作为key(如果值过长,可以对其进行HASH,进行压缩映射),转换原数据为mapPartionsRDD,然后再reduceByKey进行去重,保留最后的一条数据。

阅读全文 »