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

 

转发请写明出处。

posted on 2016-01-26 00:07  HaiziS  阅读(327)  评论(0编辑  收藏  举报