Scala 减少Spark中的元组列表

Scala 减少Spark中的元组列表,scala,apache-spark,Scala,Apache Spark,我有一个元组列表:val re=List((2,3)、(3,5)、(2,4)) 我试图减少这个列表,以便对元组的每一个第二个参数求和 所以列表((2,3)、(3,5)、(2,4)) 变成 List((2,7) , (3,5)) 我一直在研究Scala Spark示例:例如字数: val counts = file.flatMap(line => line.split(" ")) .map(word => (word, 1))

我有一个元组列表:
val re=List((2,3)、(3,5)、(2,4))

我试图减少这个列表,以便对元组的每一个第二个参数求和

所以
列表((2,3)、(3,5)、(2,4))

变成

List((2,7) , (3,5))
我一直在研究Scala Spark示例:例如字数:

val counts = file.flatMap(line => line.split(" "))
                 .map(word => (word, 1))
                 .reduceByKey(_ + _)
但当我在我的收藏中尝试类似的东西时,我收到错误:

scala> re.reduceByKey(_ + _)
<console>:13: error: value reduceByKey is not a member of List[(Int, Int)]
              re.reduceByKey(_ + _)
                 ^
scala>re.reduceByKey(u+u2;)
:13:错误:值reduceByKey不是列表[(Int,Int)]的成员
关于reduceByKey(u+u)
^

如何在元组列表上使用reduce函数?

您需要导入隐式方法,将SparkContext中的PairRDDFunctions引入范围,然后:

import org.apache.spark.SparkContext._

def tuples: RDD[(Int, Int)] = ???

type Sum = Int

val seqOp: (Sum, Int) => Sum = _ + _    
val combOp: (Sum, Sum) => Sum = _ + _

tuples.aggregateByKey(0)(seqOp, combOp)
我添加了“Sum”类型,以明确区分用作键的Int和用作值的Int


reduceByKey在PairRDDFunctions可用后也可以工作

您需要导入隐式方法,将SparkContext中的PairRDDFunctions引入范围,然后:

import org.apache.spark.SparkContext._

def tuples: RDD[(Int, Int)] = ???

type Sum = Int

val seqOp: (Sum, Int) => Sum = _ + _    
val combOp: (Sum, Sum) => Sum = _ + _

tuples.aggregateByKey(0)(seqOp, combOp)
我添加了“Sum”类型,以明确区分用作键的Int和用作值的Int


reduceByKey在PairRDDFunctions可用后也可以工作

您需要导入隐式方法,将SparkContext中的PairRDDFunctions引入范围,然后:

import org.apache.spark.SparkContext._

def tuples: RDD[(Int, Int)] = ???

type Sum = Int

val seqOp: (Sum, Int) => Sum = _ + _    
val combOp: (Sum, Sum) => Sum = _ + _

tuples.aggregateByKey(0)(seqOp, combOp)
我添加了“Sum”类型,以明确区分用作键的Int和用作值的Int


reduceByKey在PairRDDFunctions可用后也可以工作

您需要导入隐式方法,将SparkContext中的PairRDDFunctions引入范围,然后:

import org.apache.spark.SparkContext._

def tuples: RDD[(Int, Int)] = ???

type Sum = Int

val seqOp: (Sum, Int) => Sum = _ + _    
val combOp: (Sum, Sum) => Sum = _ + _

tuples.aggregateByKey(0)(seqOp, combOp)
我添加了“Sum”类型,以明确区分用作键的Int和用作值的Int

在PairRdd功能可用后,reduceByKey也可以工作