如何按RDD值分组Scala,Spark

时间:2016-09-10 05:03:50

标签: scala apache-spark

我有scala程序,它从视图中读取Couchbase存储桶并打印显示的结果。

object CouchReader {

    def main(args: Array[String]) = {
        ...
        // Generate The Context
        val sc = new SparkContext(cfg)

        sc.couchbaseView(ViewQuery.from("Document", "activityView"))
        .map(_.key)
        .collect()
        .foreach(println)
    }
}

这是输出

[35,4,-1]
[35,4,-1]
[35,4,10]
[61,4,1]
[61,4,10]

但是,我需要将输出按第1和第2个元素分组并将第3个元素相加。

,即我想要的输出是

[35,4,8]
[61,4,11]

我怎样才能做到这一点?

我还在学习scala&火花,花了一些时间在地图上,groupby但似乎很难让它继续下去。

1 个答案:

答案 0 :(得分:2)

rdd
 .map { case (v1, v2, v3) => ((v1, v2), v3) } // restructure to make v1 + v2 key
 .reduceByKey(_ + _)