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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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运行具体参数和配置信息来创建SparkContext对象

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

    val pairs = lines.map(line => (line.split(" ")(0),line.split(" ")(1))) //生成key-v键值对一方便sortByKey排序
    val groupPairs = pairs.groupByKey()
    val sortedData = groupPairs.map(groupedData => {
      val groupedKey = groupedData._1;  //获取分组的组名
      val groupValue = groupedData._2 //获取每组的内容集合
      import scala.collection.mutable.ListBuffer
      val listBuffer = new ListBuffer[Int]
      for(i <-groupValue){
        listBuffer += i.toInt
      }
      val top5 = listBuffer.sorted(Ordering.Int.reverse).take(5)
      (groupedKey,top5)
    }).sortByKey(true)
    sortedData.foreach(println)

    sc.stop()

 

排序结果为:

(Hadoop,ListBuffer(99, 98, 97, 96, 69))
(Spark,ListBuffer(195, 100, 99, 98, 91))

 

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

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

 

转发请写明出处。

以上是关于Spark IMF传奇行动第20课:top N总结的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

Spark 从入门到精通学习笔记大纲