这是我的代码:
Enter a String: does it work?
Your String is: does
此代码无法正常运行。我怎样才能使它成功运作?
答案 0 :(得分:4)
好的,所以对RDD的操作是由不同的工作者(通常在集群中的不同机器上)并行执行的,因此你不能传递这种类型的“全局”对象arr
来进行更新。你看,每个工人都会收到他们自己要更新的arr
副本,但是司机永远不会知道。
我猜你在这里要做的是收集RDD中的所有数组,你可以用一个简单的collect
动作来做:
val dataRDD = sc.textFile(args(0)).map(line => line.split(" ")).map(x => Array(x(0).toInt, x(1).toInt, x(2).toInt))
val arr = dataRDD.collect()
其中arr
的类型为Array[Array[Int]]
。然后,您可以使用正常的数组操作运行arr
。