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

  1. 如果可以,将依赖的变量放到map、filter等的参数内部定义。这样就可以使用不支持序列化的类;
  2. 如果可以,将依赖的变量独立放到一个小的class中,让这个class支持序列化;这样做可以减少网络传输量,提高效率;
  3. 如果可以,将被依赖的类中不能序列化的部分使用transient关键字修饰,告诉编译器它不需要序列化。
  4. 将引用的类做成可序列化的。
  5. 以下这两个没试过。。
  • Make the NotSerializable object as a static and create it once per machine.
  • Call rdd.forEachPartition and create the NotSerializable object in there like this:

==================

ref[1]:<http://databricks.gitbooks.io/databricks-spark-knowledge-base/content/troubleshooting/javaionotserializableexception.html>

If you see this error:

org.apache.spark.SparkException: Job aborted due to stage failure: Task not serializable: java.io.NotSerializableException: ...

The above error can be triggered when you intialize a variable on the driver (master), but then try to use it on one of the workers. In that case, Spark Streaming will try to serialize the object to send it over to the worker, and fail if the object is not serializable. Consider the following code snippet:

NotSerializable notSerializable = new NotSerializable();
JavaRDD<String> rdd = sc.textFile("/tmp/myfile");rdd.map(s -> notSerializable.doSomething(s)).collect();

This will trigger that error. Here are some ideas to fix this error:

  • Serializable the class
  • Declare the instance only within the lambda function passed in map.
  • Make the NotSerializable object as a static and create it once per machine.
  • Call rdd.forEachPartition and create the NotSerializable object in there like this:
rdd.forEachPartition(iter -> {NotSerializable notSerializable = new NotSerializable();// ...Now process iter
});

Pasted from: <http://databricks.gitbooks.io/databricks-spark-knowledge-base/content/troubleshooting/javaionotserializableexception.html>

另外, stackoverflow上http://stackoverflow.com/questions/25914057/task-not-serializable-exception-while-running-apache-spark-job 这个答的也很简明易懂。

spark出现task不能序列化错误的解决方法 org.apache.spark.SparkException: Task not serializable相关推荐

  1. spark出现task不能序列化错误的解决方法 org.apache.spark.SparkException: Task not serializable...

    import org.elasticsearch.cluster.routing.Murmur3HashFunction; import org.elasticsearch.common.math.M ...

  2. 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法

    大数据学习系列之八----- Hadoop.Spark.HBase.Hive搭建环境遇到的错误以及解决方法 参考文章: (1)大数据学习系列之八----- Hadoop.Spark.HBase.Hiv ...

  3. Spark SQL: Error in query: undefined function错误的解决方法

    本文原文出处: http://blog.csdn.net/bluishglc/article/details/50748937 严禁任何形式的转载,否则将委托CSDN官方维护权益! 问题描述 如果你在 ...

  4. WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭

    原文:WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭 在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而 ...

  5. Hudi同步Hive表报“HoodieException : Got runtime exception when hive syncing”错误的解决方法

    1 问题描述 闯过第二关之后,普通的元数据同步基本就没什么问题了.但是当遇到下面这种场景时,同步再次"翻了车": 如果在一个SparkSession下,先读取一个Hudi数据集,得 ...

  6. oracle 配置数据库错误,Oracle数据库配置错误信息解决方法

    Oracle数据库配置错误信息 Oralce数据库的错误信息经常会出现,我们看见的都是错误的代码,至于错误原因究竟是什么还一时半会难以解答,所以就把一些常见的错误整理了一下,来看看也许对你有帮助的. ...

  7. “ Error:(1, 1) java: 非法字符: ‘\ufeff‘ ”错误的解决方法

    前言:今天为了做作业,在 github 上面下载了个项目,然后在运行项目时发现报错,在此记录一下 " Error:(1, 1) java: 非法字符: '\ufeff' "错误的解 ...

  8. 有关Run-Time Check Failure #2 - Stack around the variable 'XXX' was corrupted.错误的解决方法

    有关Run-Time Check Failure #2 - Stack around the variable 'XXX' was corrupted.错误的解决方法 今天我在敲完一段代码运行的时候出 ...

  9. php 500 内部服务器错误,php 500 - 内部服务器错误的解决方法

    php 500 - 内部服务器错误的解决方法 发布时间:2020-11-04 09:55:31 来源:亿速云 阅读:71 作者:小新 小编给大家分享一下php 500 - 内部服务器错误的解决方法,相 ...

最新文章

  1. 提高PHP编码的一些技巧
  2. HM16.0之帧间预测——xCheckRDCostInter()函数
  3. C语言 —— 预定义符号__FILE____LINE___func__(编写调试函数printf , debug)
  4. 趣学python3(48)--列出所有目录及子目录文件
  5. google earth pro 64位_七彩虹秀精准刀工!iGame RTX 3060 Ti Advanced OC评测:烤机3小时64度...
  6. margin和padding的区别
  7. 有关malloc的一个小点
  8. mysql推荐内存_MySQL大内存配置方案 如my-medium.ini、my-huge.ini等
  9. Android USBCamera投屏 - 利用UVC协议将手机上的画面有线投屏到Android车机的屏幕上
  10. android超大屏触摸设备,世界上最大的安卓Android平板电脑具有98英寸的屏幕
  11. linux压缩命令常用:tar,tgz,gzip,zip,rar
  12. 广州大学机器学习与数据挖掘实验一:线性回归
  13. Kettle使用 js 文件生成节假日表文件 附带2019-2020节假日文件
  14. 单片机课设-中断程序(仿真图,代码全)
  15. 实名认证 芝麻认证 人脸识别 集成
  16. 【机器学习】左逆、右逆、伪逆和广义逆的概念理解
  17. android api17_现在在Android 17中
  18. vscode复制代码到wps中怎么不带黑色背景
  19. [CSS]CSS 字体属性
  20. Unity开发VR项目(二)——SteamVR按键设置

热门文章

  1. linux c语言 信号,linux下基于C语言的信号编程实例
  2. java对角线之和_java编程之计算矩阵对角线和(从命令窗输入数据)
  3. java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0
  4. MyEclipse 打包和发布的个人总结 .
  5. mysql definer_mysql常见问题之视图权限控制--安全性为DEFINER
  6. mysql5.6 临时表_MySQL5.6 运用临时表做SQL优化
  7. 30可以刷什么系统_刷脸支付系统可以对接原来的收银系统吗?
  8. linux得到当前系统时间,在LINUX下用C++编程,怎么获取系统当前的时间。
  9. 2sin30°在python中如何表示_如何在python中实现以下派生公式?
  10. uboot启动流程概述_Alibaba Cloud Linux 2 LTS OS 启动优化实践