exception - Apache Spark 任务不可序列化

标签 exception serialization 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 

我在 Spark 中有一个简单的“map/reduce”程序。上面几行采用了 reduce 步骤的结果并循环遍历每个结果元素。如果我将它们注释掉,那么我就不会出错。我远离使用 'forEach' 或简明的 for () 认为底层生成的元素是不可序列化的。我已经把它归结为一个简单的 for 循环,所以想知道为什么我仍然遇到这个错误。

谢谢,
兰 git

最佳答案

使用 -Dsun.io.serialization.extendedDebugInfo=true用于打开序列化调试日志记录的标志。它会告诉你究竟是什么无法序列化。

答案与您粘贴的行无关。 collect不是问题的根源,它只是触发 RDD 计算的原因。如果您不计算 RDD,则不会向执行程序发送任何内容。因此,在没有 collect 的情况下,在较早的步骤中意外包含不可序列化的内容不会导致任何问题。 .

关于exception - Apache Spark 任务不可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29496089/

相关文章:

c# - 在 C# 中序列化类。嵌套XML

Java-Eclipse 与 Spark 的依赖错误

javascript - Node 式回调: done(exception) or throw exception?

c# - 如何仅在 ContinueWith 中出现未处理的异常时中断?

c++ - 我如何在 C++ 中将 vector 序列化为 char,以便轻松使用 mongodb 作为后端

apache-spark - 为什么我必须在 Spark 作业之间不断重新启动 Spark 服务?

java - 如何从 Spark 运行独立的 jar。

c# - 如何报告 SharePoint 计时器作业的状态

exception - Jersey ExceptionMapper 和继承

java - 如何 append 到现有的 java.io.ObjectStream?