基本思路是自定義一個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é)果如下