Spark(java)报错org.apache.spark.SparkException: Task not serializable

报错原因

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

解决方法

方法1

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

方法2

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

方法3

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 7,083评论 0 4
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,620评论 0 11
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,798评论 0 4
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,772评论 0 16

友情链接更多精彩内容