我對Spark上的Scala很陌生,想知道如何創建鍵值對,並且鍵有多個元素。例如,我有這樣的數據集的嬰兒的名字:按鍵排序,但值有一個以上的元素使用斯卡拉
年,名稱,縣,數
2000,約翰國王,50
2000年,BOB,國王,40
2000年, MARY,NASSAU,60
2001,JOHN,KINGS,14
2001,簡,KINGS,30
2001,BOB,NASSAU,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請參考上面。我按原文發佈。 – ScalaNewb