繁体   English   中英

减少Spark中的元组列表

[英]Reduce a List of tuples in Spark

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

我试图减少此列表,以便将元组的每个第二个参数相加。

所以List((2,3), (3,5), (2,4))

变成

List((2,7) , (3,5))

我一直在研究Scala Spark示例: https : //spark.apache.org/examples.html,例如单词数:

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(_ + _)
                 ^

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

您需要导入隐式方法以将SparkContext中的PairRDDFunction带到作用域中,然后:

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

PairRDDFunctions可用后,reduceByKey也可以工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM