package com.ws.demo
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
* 自定义排序4 ,利用元组排序
*/
object CustomSort4 {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("CustomSort4").setMaster("local[4]")
val sc = new SparkContext(conf)
val data = Array("ws 18 150", "tt 19 145", "nn 20 130", "bb 16 120", "cb 19 150")
val dataRdd: RDD[String] = sc.parallelize(data)
//切数据
val dataMapRDD: RDD[(String,Int,Int)] = dataRdd.map(line => {
val lineArr = line.split(" ")
val name = lineArr(0)
val age = lineArr(1).toInt
val score = lineArr(2).toInt
(name,age,score)
})
//排序,元组内部也实现了排序规则 ,先使用第一个参数对比排序;如果相等,再使用第二个参数对比排序。
val sort: RDD[(String, Int, Int)] = dataMapRDD.sortBy(t =>(-t._3,t._2))
println(sort.collect().toBuffer)
sc.stop()
}
}
结果如下 :
ArrayBuffer((ws,18,150), (cb,19,150), (tt,19,145), (nn,20,130), (bb,16,120))