scala & Spark - ArrayBuffer 不追加

scala & Spark - ArrayBuffer does not append

我是 Scala 和 Apache Spark 的新手,一直在尝试一些在线示例。

我正在使用 scala.collection.mutable.ArrayBuffer 来存储形式为 (Int,Array[String]) 的元组列表。我正在创建一个 ArrayBuffer,然后逐行解析文本文件并将每一行中的所需数据附加到 ArrayBuffer。

代码没有编译错误。但是当我在附加它的块之外访问 ArrayBuffer 时,我无法获取内容并且 ArrayBuffer 始终为空。

我的代码如下-

val conf = new SparkConf().setAppName("second")
val spark = new SparkContext(conf)

val file = spark.textFile("\Desktop\demo.txt")
var list = scala.collection.mutable.ArrayBuffer[(Int, Array[String])]()
var count = 0

file.map(_.split(","))
.foreach { a =>
count = countByValue(a) // returns an Int
println("count is " + count) // showing correct output "count is 3"
var t = (count, a)
println("t is " + t) // showing correct output "t is (3,[Ljava.lang.String;@539f0af)"
list += t
}

println("list count is = " + list.length) // output "list count is = 0"
list.foreach(println) // no output

谁能指出为什么这段代码不起作用。

非常感谢任何帮助。

我假设 sparkSparkContext。在这种情况下,本地 list 没有更新,只有它的副本作为闭包发送到 spark 也就不足为奇了。如果您需要 foreach 中的可变值,您应该使用 Accumulator.