Apache spark 映射错误:参数数目错误

Apache spark 映射错误:参数数目错误,apache-spark,Apache Spark,我是spark编程新手,在使用map时被卡住了。 我的Rdd包含的数据 Array[(String, Int)] = Array((steve,5), (bill,4), (" amzon",6), (flikapr,7)) 当再次使用地图时,我得到了下面提到的错误 data.map((k,v) => (k,v+1)) <console>:32: error: wrong number of parameters; expected = 1 d

我是spark编程新手,在使用map时被卡住了。 我的Rdd包含的数据

 Array[(String, Int)] = Array((steve,5), (bill,4), (" amzon",6), (flikapr,7)) 
当再次使用地图时,我得到了下面提到的错误

data.map((k,v) => (k,v+1))
<console>:32: error: wrong number of parameters; expected = 1
              data.map((k,v) => (k,v+1))
data.map((k,v)=>(k,v+1))
:32:错误:参数数量错误;期望值=1
数据映射((k,v)=>(k,v+1))
我试图传递一个具有键值的元组,并希望返回一个具有1+to值的元组。 请帮忙,为什么我会出错

谢谢

你就快拿到了。map()操作rdd的每个记录,在您的例子中,该记录是一个元组。您可以使用Scala的下划线访问器访问元组成员,如下所示:

val data = sc.parallelize(Array(("steve",5), ("bill",4), ("amzon",6), ("flikapr",7)))

data.map(t => (t._1, t._2 + 1))
(steve,6)
(bill,5)
(amzon,7)
(flikapr,8)
data.map({ case (k, v) => (k, v+1) }).foreach(println)
(steve,6)
(bill,5)
(amzon,7)
(flikapr,8)
或者更好地使用Scala强大的模式匹配,如下所示:

val data = sc.parallelize(Array(("steve",5), ("bill",4), ("amzon",6), ("flikapr",7)))

data.map(t => (t._1, t._2 + 1))
(steve,6)
(bill,5)
(amzon,7)
(flikapr,8)
data.map({ case (k, v) => (k, v+1) }).foreach(println)
(steve,6)
(bill,5)
(amzon,7)
(flikapr,8)
这是到目前为止最好的——键值元组在Spark中非常常见,我们通常将它们称为pairRDD,它们非常方便。对于您的用例,您只需要在不更改键的情况下对值进行操作。您只需使用mapValues():

你差点就成功了。map()操作rdd的每个记录,在您的例子中,该记录是一个元组。您可以使用Scala的下划线访问器访问元组成员,如下所示:

val data = sc.parallelize(Array(("steve",5), ("bill",4), ("amzon",6), ("flikapr",7)))

data.map(t => (t._1, t._2 + 1))
(steve,6)
(bill,5)
(amzon,7)
(flikapr,8)
data.map({ case (k, v) => (k, v+1) }).foreach(println)
(steve,6)
(bill,5)
(amzon,7)
(flikapr,8)
或者更好地使用Scala强大的模式匹配,如下所示:

val data = sc.parallelize(Array(("steve",5), ("bill",4), ("amzon",6), ("flikapr",7)))

data.map(t => (t._1, t._2 + 1))
(steve,6)
(bill,5)
(amzon,7)
(flikapr,8)
data.map({ case (k, v) => (k, v+1) }).foreach(println)
(steve,6)
(bill,5)
(amzon,7)
(flikapr,8)
这是到目前为止最好的——键值元组在Spark中非常常见,我们通常将它们称为pairRDD,它们非常方便。对于您的用例,您只需要在不更改键的情况下对值进行操作。您只需使用mapValues():


感谢@Junjun Olympia提供此完整信息。我需要进行模式匹配。PairRdd函数对我真的很有帮助。谢谢@Junjun Olympia提供完整的信息。我需要进行模式匹配。PairRdd函数对我很有帮助。