应该是二次排序是一样的道理。楼主这个甚至可以采用二次排序的方式。
下面是关于二次排序的代码,楼主可以修改下。下面是对一个数组的二次排序。思路应该都是一样的。
[mw_shl_code=scala,true]package com.spark.secondApp
import org.apache.spark.{SparkContext, SparkConf}
object SecondarySort {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName(" Secondary Sort ").setMaster("local")
val sc = new SparkContext(conf)
val file = sc.textFile("hdfs://worker02:9000/test/secsortdata")
val rdd = file.map(line => line.split("\t")).
map(x => (x(0),x(1))).groupByKey().
sortByKey(true).map(x => (x._1,x._2.toList.sortWith(_>_)))
val rdd2 = rdd.flatMap{
x =>
val len = x._2.length
val array = new Array[(String,String)](len)
for(i <- 0 until len) {
array(i) = (x._1,x._2(i))
}
array
}
sc.stop()
}
}[/mw_shl_code]
上图中第一列升序排列,第二列降序排列。
|