2016-01-13 76 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