Spark task not serializable错误的分析和处理
来源:互联网 发布:python 中文字符串 编辑:程序博客网 时间:2024/06/07 19:20
在编写代码Spark应用时出现以上的问题,最后发现是因为Dataset<Row>的foreach方法中传入的参数ForeachFunction<Row>引起的,代码如下:
projectDataSourceDFFromMySQL.foreach(new ForeachFunction<Row>() { private static final long serialVersionUID = 4222182685492143838L; public void call(Row t) throws Exception { String id = t.getString(0); System.out.println(id); } });
我分析原因是:这里的实现了接口ForeachFunction的内部类在运行的时候Master会将其序列化传给Slave,因此这个类必须要序列化,但是内部类序列化的时候需要其所寄宿的外部类的对象,而我这个外部类并没有实现Serializable接口,因此无法序列化,则会报上边的错误,将外部类实现Serializable接口后则问题解决。 按照上边的分析,如果我单独将ForeachFunction接口实现成一个类是不是就不需要让宿主类实现Serializable接口了呢?于是实现了一个类,代码如图:
public class ForeachFunTest implements ForeachFunction<Row> { private static final long serialVersionUID = -4892194648703458595L; public void call(Row t) throws Exception { String id = t.getString(0); System.out.println(id); }}
然后foreach的地方改为:
projectDataSourceDFFromMySQL.foreach(new ForeachFunTest());
的确,这时之前的宿主类就不需要实现Serializable接口了。由此可以得出一个结论,如果这个ForeachFunction中引入的所有的变量都必须是可序列化的,而且变量对应的类也必须放在Slave的类加载器下,因为在Slave那端反序列化的时候要用到这些类的Class信息。当然了,报这个错误也有其他原因,我这里叙述的算是其中的一个。也不是啥高大上的知识点,希望能解决一些人的疑惑,抛砖引玉。
阅读全文
0 0
- Spark task not serializable错误的分析和处理
- spark出现task不能序列化错误的解决方法 org.apache.spark.SparkException: Task not serializable
- org.apache.spark.SparkException: Task not serializable问题分析
- Spark Task未序列化(Task not serializable)问题分析及解决
- spark出现task org.apache.spark.SparkException: Task not serializable
- org.apache.spark.SparkException: Task not serializable
- spark: Task not serializable (java)
- spark学习-52-Spark的org.apache.spark.SparkException: Task not serializable
- spark出现“org.apache.spark.SparkException: Task not serializable"
- spark + quartz : org.apache.spark.SparkException: Task not serializable
- Spark[二]:org.apache.spark.SparkException: Task not serializable
- 针对Apache Spark logging within scala 出现的 Task not serializable
- Task not serializable exception while running apache spark job
- Spark Insert Hbase解决task not to serializable
- Spark Java sortByKey二次排序及Task not serializable异常
- Task not serializable
- Spark运行程序异常信息: org.apache.spark.SparkException: Task not serializable 解决办法
- Exception in thread "main" org.apache.spark.SparkException: Task not serializable异常
- Android语音用户引导:播放assets中的音频资源
- STL(十九)queue队列容器
- 索引
- IO和NIO的比较
- poj2417大步小步法
- Spark task not serializable错误的分析和处理
- CTreeCtrl获取根节点
- C++输入获取未知长度的行输入数组 与 输出控制
- linux运用vim编写C风格的代码
- mysql总结
- JQuery EasyUI 之Layout布局组件小Demo
- 单链表逆置
- Tyvj1037
- SVM-支持向量机学习(3):线性SVM