Ste*_*ane 3 scala accumulator apache-spark
我正在运行这个简单的代码:
val accum = sc.accumulator(0, "Progress");
listFilesPar.foreach {
filepath =>
accum += 1
}
Run Code Online (Sandbox Code Playgroud)
listFilesPar是一个 RDD[String]
这会引发以下错误:
org.apache.spark.SparkException: Task not serializable
Run Code Online (Sandbox Code Playgroud)
现在我不明白发生了什么,我没有括号括号,因为我需要写一个冗长的函数.我只是做单元测试
造成这种情况的典型原因是闭合意外地捕获了某些东西.你没有在你的粘贴中包含的东西,因为你永远不会期望它会被序列化.
您可以尝试减少代码,直到找到它为止.或者只需打开序列化调试日志记录-Dsun.io.serialization.extendedDebugInfo=true.您可能会在输出中看到Spark尝试序列化某些愚蠢的东西.