1、資料樣本:
1 52 4
3 61 3
2 11 14
2 45
4 11
3 23
5 12
6 13
2、排序規則:先按照第乙個字元排序,如果第乙個相同,再按照第二個字元排序
3、排序後的結果
1 31 5
1 14
2 12 4
2 45
3 63 23
4 11
5 12
6 13
4、spark二次排序實現
4.1、自定義key
package com.test.spark/** * @author admin
* scala處理二次排序的類
* 自定義key
*/class secondsortbykey(val first: int, val second: int) extends ordered[secondsortbykey] with serializable
//重寫tostring方法
/*override def tostring(): string = */
}
4.2、二次排序程式編排
package com.test.sparkimport org.apache.spark.
/** * @author admin
* spark二次排序的具體實現步驟:
* 第一步: 自定義key 實現scala.math.ordered介面,和serializeable介面
* 第二步:將要進行二次排序的資料載入,按照格式的rdd
* 第三步:使用sortbykey 基於自定義的key進行二次排序
* 第四步:去掉排序的key,只保留排序的結果
*/def main(args: array[string]): unit =
}// 使用sortbykey 基於自定義的key進行二次排序, true:公升序,false:降序
val sortpair = pairs.sortbykey(true)
// map操作,只需要保留排序結果
val sortresult = sortpair.map(line => line._2)
sortresult.collect().foreach
// 停止sc
sc.stop()
}}
Spark中的二次排序
首先要先定義乙個自定義的型別,實現scala提供的ordered介面並實現其方法,方法就是排序的邏輯。這裡我對兩列數字進行排序,如下 package cn.spark.study.core class secondarysortkey val first int,val second int ext...
Hadoop Streaming二次排序
由於hadoop機器記憶體不足,所以需要把資料mapred進來跑。這樣,就需要,同乙個key下的輸入資料是有序的,即 對於keya的資料,要求data1先來,之後data2再來 所以需要對data進行二次排序。d stream.num.map.output.key.fields 2 這個,可以設定在...
MapReduce二次排序
預設情況下,map輸出的結果會對key進行預設的排序,但個別需求要求對key排序的同時還需要對value進行排序 這時候就要用到二次排序了。本章以hadoop權威指南中計算每年最大氣溫值為例,原始資料雜亂無章 2008 33 2008 23 2008 43 2008 24 2008 25 2008 ...