SPARK中实现用户自定义排序

来源:互联网 发布:免费网络营销软件 编辑:程序博客网 时间:2024/06/03 21:55

大家:

   好!SPARK中实现用户自定义排序的样例。


package day04


import org.apache.spark.{SparkConf, SparkContext}


/**
  * Created by Administrator on 2017/9/24.
  * 功能: 演示用户自定义排序  继承Ordered 类,重写compare方法
  *
  */
// 先定义一个样例类
case class Goods(val simi:Int,val price:Int) extends Ordered[Goods] with Serializable
{


  override def compare(that:Goods):Int={
    if(this.price==that.price){
      this.simi-that.simi
    }else{
      this.price-that.price
    }


  }
}






object UserDefinedSort {
  def main(args: Array[String]): Unit = {
   val conf=new SparkConf().setAppName("UserDefinedSort").setMaster("local[2]")
   val sc=new SparkContext(conf)
   val lines=sc.textFile("c://sort.txt")
//    val lines=sc.parallelize(List(("apple",6,5288),("sansung",5,5288),("huawei",1,3788),("mi",4,2499),("sony",3,3799),("lg",5,2499)))
   val rdd=lines.map(line=>{
    val f=line.split("\t")
     (f(0),f(1).toInt,f(2).toInt)
   })
//    println(rdd.collect().toBuffer)
//    println("-------------")
    val sort=rdd.sortBy(x=>Goods(x._2,x._3),false)


//    val sort=lines.sortBy(x=>Goods(x._2,x._3),false)
    println(sort.collect().toBuffer)




  }
}


说明: 样例数据如下所示:

apple 5 5288
sansung 5 5888
huawei 1 3788
mi 4 2499
sony 3 3799
lg 4 2999



原创粉丝点击