Spark RDD操作通过键对值求和

时间:2018-08-30 10:52:38

标签: scala apache-spark

我有一个Spark RDD,如下所示: RDD [string]的值如下:

(00,"asfad", 12)
(01,"fdfdf", 14)
(02,"fdfsfdg",232)
(00, "asfad", 34)
(01, "fdfdf", 12)

现在我想要这样的东西:

 (00,"asfad",46)
 (01, "fdfdf",26)
 (02, "fdfsfdg",232) 

请提出一种使用Scala实现此目标的方法

1 个答案:

答案 0 :(得分:0)

如果您有类似RDD [(Int,String,Int)]的内容,则可以尝试

rdd.map { case (a, b, c) => ((a, b), c) }.reduceByKey((x, y) => x + y).map { case ((a, b), c) => (a, b, c) }