Spark(java)报错org.apache.spark.Sp

2019-12-16  本文已影响0人  后来_16db

报错原因

在map或filter操作中,调用了类成员函数或类成员变量,所以需要该类可序列化。
如果在map或filter中调用的是方法内部类,或者匿名类,也会报错。原因是Java的非静态内部类都隐式的持有外部类的引用,序列化内部类的时候也会序列化外部类。

解决方法

方法1

将该类implements Serializable,然后将不能序列化的成员变量前加transient关键字,特别是JavaSparkContext成员变量。

方法2

使用lambda表达式替换匿名内部类。

方法3

调用静态成员函数和静态变量。

上一篇下一篇

猜你喜欢

热点阅读