spark出现task不能序列化错误的解决方法

血红的双手。 提交于 2021-02-19 08:12:31

Caused by: java.io.NotSerializableException: org.apache.spark.sql.api.java.StructField"的错误

一般是因为在map、filter等的参数使用了外部的变量,但是这个变量不能序列化。特别是当引用了某个类(经常是当前类)的成员函数或变量时,会导致这个类的所有成员(整个类)都需要支持序列化。解决这个问题最常用的方法有:

1.如果可以,将依赖的变量放到map、filter等的参数内部定义。这样就可以使用不支持序列化的类;2..如果可以,将依赖的变量独立放到一个小的class中,让这个class支持序列化;这样做可以减少网络传输量,提高效率;

3.如果可以,将被依赖的类中不能序列化的部分使用transient关键字修饰,告诉编译器它不需要序列化。

4.将引用的类做成可序列化的。

我在scala里面调用java的程序,直接实现接口Serializable 

public class LogParser extends Common implements java.io.Serializable{

解决的

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!