spark中的sortBy和sortByKey

spark中對RDD的數據進行排序有兩種方法:

一種就是sortByKey,也就是我們熟知的根據key值進行排序。

另外一種時sortBy,這個就是根據我們的需要自己寫根據那個值排序。比如我們對wordcount的結果進行排序,除了將(key,value)倒過來根據key排序外,我們可以直接用sortBy.

用法如下:

第一個參數是一個函數,該函數的也有一個帶T泛型的參數,返回類型和RDD中元素的類型是一致的;
第二個參數是ascending,從字面的意思大家應該可以猜到,是的,這參數決定排序後RDD中的元素是升序還是降序,默認是true,也就是升序;
第三個參數是numPartitions,該參數決定排序後的RDD的分區個數,默認排序後的分區個數和排序之前的個數相等,即爲this.partitions.size。

    val sparkConf = new SparkConf().setMaster("local").setAppName("test")
    val sc = new SparkContext(sparkConf)
//    val data = sc.parallelize(List("a","b","c"))
    val data = sc.textFile("E:\\yisa_oe\\data\\data.txt",1)
    val res = data.flatMap(_.split(" ")).map(x=>(x,1)).reduceByKey(_+_)
    //根據value排序
    val sortBy = res.sortBy(x=> x._2,false)
    //根據key排序
//    val sortData = res.map(x=>(x._2,x._1))sortByKey (false)
//    sortData.collect().foreach(println)
    sortBy.collect().foreach(println)
    sc.stop()




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章