Spark的二次排序

2021-09-08 20:05:23 字數 1245 閱讀 1894

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.spark

import 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 ...