Scala 如何在Spark中正确求和.map函数中的整数?

Scala 如何在Spark中正确求和.map函数中的整数?,scala,apache-spark,Scala,Apache Spark,我是Scala和Spark的新手,尝试在Spark中创建一个类似RDD的对,为每一行指定一个Int作为键并求和+1 val mapUrls = urls.map{ var cont = 0 x => cont += 1 (cont,x) } 问题在于,不知何故,cont变量在一定时间后返回到1 我做错了什么?这就是你想要的吗 urls.zipWithIndex.map(_.swap) 您的代码无法正常工作。请记住,Spark是分布式框架,没有共享内存。每个任务都有自己的更新cont这

我是Scala和Spark的新手,尝试在Spark中创建一个类似RDD的对,为每一行指定一个Int作为键并求和+1

val mapUrls = urls.map{
var cont = 0
x => 
cont += 1
(cont,x)
}
问题在于,不知何故,cont变量在一定时间后返回到1


我做错了什么?这就是你想要的吗

urls.zipWithIndex.map(_.swap)

您的代码无法正常工作。请记住,Spark是分布式框架,没有共享内存。每个任务都有自己的更新
cont

这就是您想要的吗

urls.zipWithIndex.map(_.swap)

您的代码无法正常工作。请记住,Spark是分布式框架,没有共享内存。每个任务都有自己的更新
cont

谢谢,伙计,这正是我想要的。我发现有很多功能可以满足日常需要。但为了研究的目的,还有另一种方法可以解决这个问题??不是通过修改闭包中的变量。你可以通过查看zipWithIndex来了解这是如何实现的。谢谢,伙计,这正是我想要的。我发现有很多功能可以满足日常需要。但为了研究的目的,还有另一种方法可以解决这个问题??不是通过修改闭包中的变量。您可以检查zipWithIndexsourc以了解如何实现这一点。