package cn.smart.spark
import org.apache.spark.{SparkConf, SparkContext}
/**
* Created by Mr.Smart on 2018-05-24.
*/
object OrderContext {
implicit val girlOrdering = new Ordering[Girl] {
override def compare(x: Girl, y: Girl): Int = {
if(x.faceValue > y.faceValue) 1
else if (x.faceValue == y.faceValue) {
if(x.age > y.age) -1 else 1
} else -1
}
}
}
object CustomerSort {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("CustomerSort").setMaster("local[2]")
val sc = new SparkContext(conf)
val rdd1 = sc.parallelize(List(("yuihatano", 90, 28, 1), ("angelababy", 90, 27, 2),("JuJingYi", 95, 22, 3)))
import OrderContext._
val rdd2 = rdd1.sortBy(x => Girl(x._2,x._3),false)
println(rdd2.collect().toBuffer)
sc.stop()
}
}
/**
*
* 第一种方式
* @param faceValue
* @param age
*/
/*case class Girl(val faceValue: Int, val age: Int) extends Ordered[Girl] with Serializable {
override def compare(that: Girl): Int = {
if(this.faceValue == that.faceValue) {
that.age - this.age
} else {
this.faceValue -that.faceValue
}
}
}*/
case class Girl(val faceValue: Int, val age: Int) extends Serializable
spark自定义排序
最新推荐文章于 2020-09-27 21:12:57 发布