spark的sortbykey的二次排序

基本思路是自定義一個sortbykey的類,然后是使用map轉(zhuǎn)換,其中key為該對象即可,最后調(diào)用算子sortbykey,基本實(shí)現(xiàn)如下:

1、自定義類

class SecondSortByKeyScala(val first :String,val second :Int)extends Ordered[SecondSortByKeyScala]with Serializable {

override def compare(that: SecondSortByKeyScala): Int = {

val compare =this.first.compareTo(that.first)

if(compare ==0){

return this.second.compareTo(that.second)

}

return compare

}

}

2、spark執(zhí)行代碼如下

val spark = SparkSession.builder().appName("spark1").master("local[1]").getOrCreate();

val sc = spark.sparkContext;

val list =Array("xiao,76","xiao,56","xiao1,98","xiao1,65",

"xiao2,24","xiao2,98","xiao3,77","xiao3,56","xiao3,96");

val rdd = sc.parallelize(list)

val sortStartValue = rdd.map(x =>(new SecondSortByKeyScala(

x.split(",")(0),x.split(",")(1).toInt),x))

val rddsortbeing = sortStartValue.sortByKey(false)

rddsortbeing.foreach(x =>{

println(x._2)

})

3、打印結(jié)果如下


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容