Spark IMF传奇行动第19课:spark排序总结

今晚听了王家林老师的Spark IMF传奇行动第19课:spark排序,作业是:1、scala 实现二次排序,使用object apply 2;自己阅读RangePartitioner

代码如下:

/**
 * Created by 王家林 on 2016/1/10.
 */
object SecondarySortApp {
  def main(args: Array[String]){
    val conf = new SparkConf()  //创建SparkConf对象
    conf.setAppName("SecondarySortApp")    //设置应用程序名称,程序运行的监控界面可以看到名称
    conf.setMaster("local")    //此时,程序在本地运行,不需要安装Spark集群

    val sc = new SparkContext(conf)  //通过传入SparkConf实例来定制Spark运行具体参数和配置信息来创建SparkContext对象

    val lines = sc.textFile("src/Scdfile")   //读取一个本地文件

    val pairWithKey = lines.map(line => (
      new SecondarySortKey(line.split(" ")(0).toInt,line.split(" ")(1).toInt) , line
    ))

    val sorted = pairWithKey.sortByKey(false)

    val sortedResult = sorted.map(line => line._2)

    sortedResult.collect.foreach(println)

    sc.stop()

  }

class SecondarySortKey(val first:Int,val second:Int) extends Ordered[SecondarySortKey] with Serializable{
  def compare(other:SecondarySortKey):Int ={
    if(this.first - other.first !=0){
      this.first - other.first
    }else{
      this.second - other.second
    }
  }
}

排序结果为:

8 7
4 3
4 1
3 2
2 3
2 1

后续课程可以参照新浪微博 王家林_DT大数据梦工厂:http://weibo.com/ilovepains

王家林  中国Spark第一人,微信公共号DT_Spark

转发请写明出处。

时间: 2024-12-18 03:24:25

Spark IMF传奇行动第19课:spark排序总结的相关文章

Spark IMF传奇行动第21课:从Spark架构中透视Job

版权声明:本文为博主原创文章,未经博主允许不得转载.作者:HaiziS 昨晚听了王家林老师的Spark IMF传奇行动第21课:从Spark架构中透视Job,笔记如下: 默认一个worker有一个executor,也可以设置多个,当cpu利用不足时. 并行度也是被继承的 当Spark集群启动的时候,首先启动Master进程负责整个集群资源管理和分配并接受作业的提交且为作业分配计算资源,每个工作节点默认启动一个Worker Process来管理当前节点的mem,cpu等计算资源并且向Master汇

Spark IMF传奇行动第20课:top N总结

版权声明:本文为博主原创文章,未经博主允许不得转载.作者:HaiziS 今晚听了王家林老师的Spark IMF传奇行动第20课:top N,作业是:scala写topGroup,且对组名key排序 代码如下: def main(args: Array[String]){ val conf = new SparkConf() //创建SparkConf对象 val sc = new SparkContext(conf) //通过传入SparkConf实例来定制Spark运行具体参数和配置信息来创建

Spark IMF传奇行动第16课RDD实战总结

今晚听了王家林老师的Spark IMF传奇行动第16课RDD实战,课堂笔记如下: RDD操作类型:Transformation.Action.Contoller reduce要符合交换律和结合律 val textLines = lineCount.reduceByKey(_+_,1) textLines.collect.foreach(pair=> println(pair._1 + "="+pair._2)) def collect(): Array[T] = withScop

Spark IMF传奇行动第17课Transformations实战总结

今晚听了王家林老师的Spark IMF传奇行动第17课Transformations实战,作业是用SCALA写cogroup: def main(args: Array[String]): Unit = { val sc = sparkContext("Transformations") cogroupTrans(sc) sc.stop() } def cogroupTrans(sc:SparkContext): Unit ={ val stuNames = Array( Tuple2

Spark IMF传奇行动第18课:RDD持久化、广播、累加器总结

昨晚听了王家林老师的Spark IMF传奇行动第18课:RDD持久化.广播.累加器,作业是unpersist试验,阅读累加器源码看内部工作机制: scala> val rdd = sc.parallelize(1 to 1000) rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:21 scala> rdd.persist res0: rdd.type

Spark IMF传奇行动第22课:RDD的依赖关系彻底解密

版权声明:本文为博主原创文章,未经博主允许不得转载.作者:HaiziS 昨晚听了王家林老师的Spark IMF传奇行动第22课:RDD的依赖关系彻底解密,笔记如下: 1,窄依赖是指每个父RDD的一个Partition最多被子RDD的一个Partition所使用,例如map.filter.union等都会产生窄依赖: 2宽依赖是指一个父RDD的Partition会被多个子RDD的Partition所使用,例如groupByKey.reduceByKey.sortByKey等操作都会产生宽依赖 表面

IMF传奇行动第82课:Spark Streaming第一课:案例动手实战并在电光石火间理解其工作原理

 流(Streaming),在大数据时代为数据流处理,就像水流一样,是数据流:既然是数据流处理,就会想到数据的流入.数据的加工.数据的流出. 日常工作.生活中数据来源很多不同的地方.例如:工业时代的汽车制造.监控设备.工业设备会产生很多源数据:信息时代的电商网站.日志服务器.社交网络.金融交易系统.黑客攻击.垃圾邮件.交通监控等:通信时代的手机.平板.智能设备.物联网等会产生很多实时数据,数据流无处不在. 在大数据时代SparkStreaming能做什么? 平时用户都有网上购物的经历,用户在

[Spark传奇行动] 第34课:Stage划分和Task最佳位置算法源码彻底解密

本課主題 Job Stage 划分算法解密 Task 最佳位置算法實現解密 引言 作业调度的划分算法以及 Task 的最佳位置的算法,因为 Stage 的划分是DAGScheduler 工作的核心,这也是关系到整个作业有集群中该怎么运行:其次就是数据本地性,Spark 一舨的代码都是链式表达的,这就让一个任务什么时候划分成 Stage,在大数据世界要追求最大化的数据本地性,所有最大化的数据本地性就是在数据计算的时候,数据就在内存中.最后就是 Spark 的实现算法时候的略的怎么样.希望这篇文章能

第19课:Spark高级排序彻底解密

本节课内容: 1.基础排序算法实战 2.二次排序算法实战 3.更高级别排序算法 4.排序算法内幕解密 排序在Spark运用程序中使用的比较多,且维度也不一样,如二次排序,三次排序等,在机器学习算法中经常碰到,所以非常重要,必须掌握! 所谓二次排序,就是根据两列值进行排序,如下测试数据: 2 3 4 1 3 2 4 3 8 7 2 1 经过二次排序后的结果(升序): 2 1 2 3 3 2 4 1 4 3 8 7 在编写二次排序代码前,先简单的写下单个key排序的代码: val conf = ne