您的位置:首页 > 其它

spark 二次排序实现

2016-06-04 15:27 369 查看
一、文本格式([b]sort.txt)[/b]

1 5

2 4

3 6

1 3

2 1


二、编写类

package com.scala

/**

 * scala处理二次排序的类

 * 需要有参数

 */

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

  def compare(other:SecondSortByK):Int={

    //this关键字可加,也可不加,如果遇到多个变量时,必须添加

    if(this.first-other.first!=0)

      this.first-other.first

    else

      this.second-other.second

  }

  //重写toString方法

  override def toString():String={

    "first:"+first+" second:"+second

  }

}


三、编写排序类

package com.scala

import org.apache.spark.SparkConf

import org.apache.spark.SparkContext

/**

 * scala版本的二次排序

 */

object SecondSortt {

  def main(args:Array[String]):Unit={

    val conf=new SparkConf().setAppName("SortSecond").setMaster("local[1]")

    //获取context

    val sc=new SparkContext(conf)

    //加载到内存RDD

    val lines=sc.textFile("sort.txt")

    //map操作

    val pairs=lines.map { x =>{

      val spl=x.split(" ")

         (new SecondSortByK(spl(0).toInt,spl(1).toInt),x)

    }  }

    //sortByKey

    val results=pairs.sortBy(x=>x._1, true)

    //遍历

    results.foreach(x=>{

      println("result is "+x._1)

    })

    

    sc.stop()

  }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: