【发布时间】:2016-10-13 03:22:08
【问题描述】:
我对 Spark 上的 Scala 非常陌生,想知道如何创建键值对,其中键具有多个元素。例如,我有这个婴儿名字的数据集:
年、名、县、号
2000 年,约翰,国王,50 岁
2000,鲍勃,国王,40
2000 年,玛丽,拿骚,60 岁
2001 年,约翰·金斯,14 岁
2001,简,金斯,30 岁
2001 年,鲍勃,拿骚,45 岁
而且我想找到每个县最常发生的事件,无论年份如何。我该怎么做呢?
我确实使用循环来完成此操作。请参阅下文。但我想知道是否有更短的方法可以利用 Spark 和 Scala 对偶性。 (即我可以减少计算时间吗?)
val names = sc.textFile("names.csv").map(l => l.split(","))
val uniqueCounty = names.map(x => x(2)).distinct.collect
for (i <- 0 to uniqueCounty.length-1) {
val county = uniqueCounty(i).toString;
val eachCounty = names.filter(x => x(2) == county).map(l => (l(1),l(4))).reduceByKey((a,b) => a + b).sortBy(-_._2);
println("County:" + county + eachCounty.first)
}
【问题讨论】:
-
@maasg 请参考上文。我是由原始帖子编辑的。
标签: arrays scala sorting apache-spark