我有一个Spark RDD,其格式为(String,(Int,Int)),我想将Int值一起添加以创建一个(String,Int)映射。
这是我的RDD中元素的示例: res13:(String,(Int,Int))=(9D4669B432A0FD,(1,1))
我想以(String,Int)=(9D4669B432A0FD,2)的RDD结束
答案 0 :(得分:5)
你应该map
将值yourRdd.map(pair => (pair._1, pair._2._1 + pair._2._2))
加到第二对的总和上:
yourRdd.map{case(str, (x1,x2)) => (str, x1+x2)}
@marios在编辑中提出了以下更好的语法:
或者如果你想让它更具可读性:
{{1}}
答案 1 :(得分:1)
示例:
val data = Array(("9888wq",(1,2)),("abcd",(1,1)),("abcd",(3,2)),("9888wq",(4,2)))
val rdd= sc.parallelize(data)
val result = rdd.map(x => (x._1,(x._2._1+x._2._2))).reduceByKey((x,y) => x+y)
result.foreach(println)
输出:
(9888wq,9)
(abcd,7)