2016-01-13 25 views
1
t: Array[(Int, String)] = Array((24210720,s503), (24210742,s500), (24210742,s500), (24210748,s503)) 

我有一個鍵值對的數組。我想通過鍵減少/ groupby(我不確定使用哪一個),並希望將核心相應值作爲值計數映射。應該是這個樣子如何groupByKey和計數值的發生核心按照火花鍵

24210720 => {503 => 1},24210742 => {S500 => 2},24210748 => {503 => 1}

所以最後我想打印
24210720:S503:1
24210742:S500:2
24210748:S503:1

回答

2

如果你的目標僅僅是打印計數每對新人的價值觀,不是你可以簡單地做:

rdd=sc.parallelize(t); 
rdd.map(x=>(x, 1)).reduceByKey(_+_).map(x => x._1._1+":"+x._1._2+":"+x._2) 
+1

這正是我所需要的。你讓我今天一整天都感覺很好。感謝這樣一個簡單而優雅的解決方案。 – user1579557