Ran*_*yer 4 serialization exception apache-spark
我知道以前曾问过这个问题,但我认为我的失败是由于不同的原因。
List<Tuple2<String, Integer>> results = results.collect();
for (int i=0; i<results.size(); i++) {
System.out.println(results.get(0)._1);
}
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task not serializable: java.io.NotSerializableException: tools.MAStreamProcessor$1 at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1214) at
Run Code Online (Sandbox Code Playgroud)
我在Spark中有一个简单的“ map / reduce”程序。以上各行采用reduce步骤的结果,并循环遍历每个所得元素。如果我将其注释掉,那么我不会出错。我没有使用'forEach'或简明的(),而是认为所生成的基础生成了不可序列化的元素。我将其归结为一个简单的for循环,所以想知道为什么我仍然遇到此错误。
谢谢,兰吉特
使用该-Dsun.io.serialization.extendedDebugInfo=true
标志可以打开序列化调试日志记录。它会告诉您究竟它无法序列化什么。
答案与您粘贴的行无关。该collect
不是问题的根源,这正是触发RDD的计算。如果不计算RDD,则不会有任何内容发送给执行者。因此,在没有步骤的情况下意外包含不可序列化的内容不会导致任何问题collect
。
归档时间: |
|
查看次数: |
1291 次 |
最近记录: |