//统计单词top10 def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("tst").setMaster("local[3]") val sc = new SparkContext(conf) //wc val res = sc.textFile("D:\\test\\spark\\urlCount").flatMap(_.split("\\s")) .map((_,1)).reduceByKey(_+_).map(t=>(t._2,t._1)).sortByKey().take(10) //不能用top函数,要用 print(res.toBuffer) println() // val sr = Source.From val lines = Source.fromFile("D:\\test\\spark\\urlCount\\itcast.log").getLines(); val res1 = lines.flatMap(_.split("\\s")).toList. map((_,1L)).groupBy(_._1).map(t=>(t._1,t._2.size)).toList.sortBy(-_._2).take(10) print(res1.toList.toBuffer) }
在很多应用场景都需要对结果数据进行排序,中有时也不例外。在中存在两种对RDD进行排序的函数,分别是 sortBy和sortByKey函数。sortBy是对标准的RDD进行排序,它是从 0.9.0之后才引入的(可以参见SPARK-1063
)。而sortByKey函数是对PairRDD进行排序,也就是有Key和Value的RDD。下面将分别对这两个函数的实现以及使用进行说明。
当组成keyval对之后只能用sortBykey实现了