Spark Task不能使用简单的累加器进行序列化?

时间:2015-01-16 09:27:23

标签: scala apache-spark accumulator

我正在运行这个简单的代码:

val accum = sc.accumulator(0, "Progress");
listFilesPar.foreach {
  filepath =>
    accum += 1
}

listFilesPar是RDD[String]

会抛出以下错误:

org.apache.spark.SparkException: Task not serializable

现在我不明白发生了什么 我不会括号括号,因为我需要写一个冗长的函数。我只是做单元测试

1 个答案:

答案 0 :(得分:6)

这种情况的典型原因是闭合意外地抓住了某些东西。你没有在你的粘贴中包含的东西,因为你永远不会期望它会被序列化。

您可以尝试减少代码,直到找到它为止。或者只需使用-Dsun.io.serialization.extendedDebugInfo=true打开序列化调试日志记录。你可能会在输出中看到Spark试图将某些东西序列化。