版权声明:本文为博主原创文章,未经博主允许不得转载。作者: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
转发请写明出处。
时间: 2024-10-21 02:59:51