【发布时间】:2015-02-16 14:21:43
【问题描述】:
我有一组我需要的记录:
1) 按“日期”、“城市”和“种类”分组
2) 按“奖品”对每个组进行排序
在我的代码中:
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object Sort {
case class Record(name:String, day: String, kind: String, city: String, prize:Int)
val recs = Array (
Record("n1", "d1", "k1", "c1", 10),
Record("n1", "d1", "k1", "c1", 9),
Record("n1", "d1", "k1", "c1", 8),
Record("n2", "d2", "k2", "c2", 1),
Record("n2", "d2", "k2", "c2", 2),
Record("n2", "d2", "k2", "c2", 3)
)
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
.setAppName("Test")
.set("spark.executor.memory", "2g")
val sc = new SparkContext(conf)
val rs = sc.parallelize(recs)
val rsGrp = rs.groupBy(r => (r.day, r.kind, r.city)).map(_._2)
val x = rsGrp.map{r =>
val lst = r.toList
lst.map{e => (e.prize, e)}
}
x.sortByKey()
}
}
当我尝试对组进行排序时出现错误:
value sortByKey is not a member of org.apache.spark.rdd.RDD[List[(Int,
Sort.Record)]]
怎么了?如何排序?
【问题讨论】:
-
如果你将排序参数作为键的一部分,看起来你也可以使用 repartitionAndSortWithinPartitions() 来获得“tera-sort”规模。见spark.apache.org/docs/1.3.0/api/scala/…
标签: scala sorting apache-spark