2016-09-10 13 views
0

ビューからCouchbaseバケットを読み取って、表示された結果を印刷する以下のスカラープログラムがあります。RDD値でグループ分けする方法Scala、Spark

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] 

である。しかし、私は第一及び第二の要素でグループ化された出力を取得し、第三の要素を合計する必要があります。

すなわち私の所望の出力は、どのように私はそれを達成することができます

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

のですか?

私はまだスカラを学んでいます&スパーク、マップ、groupbyでしばらく時間を費やしましたが、それを得るのは難しいようです。

答えて

2
rdd 
.map { case (v1, v2, v3) => ((v1, v2), v3) } // restructure to make v1 + v2 key 
.reduceByKey(_ + _) 
関連する問題