本文首发于 www.yidooo.net/2018/08/19/… 转载请注明出处

问题描述

出现“org.apache.spark.SparkException: Task not serializable”这个错误,一般是因为在map、filter等的参数使用了外部的变量,但是这个变量不能序列化。其中最普遍的情形是:当引用了某个类(经常是当前类)的成员函数或变量时,会导致这个类的所有成员(整个类)都需要支持序列化。虽然许多情形下,当前类使用了“extends Serializable”声明支持序列化,但是由于某些字段不支持序列化,仍然会导致整个类序列化时出现问题,最终导致出现Task未序列化问题。

解决办法与编程建议

这个问题主要是引用了某类的成员变量或函数,并且相应的类没有做好序列化处理导致的。因此解决这个问题无非以下两种方法:

不在(或不直接在)map等闭包内部直接引用某类成员函数或成员变量

  • 对于依赖某类成员变量的情形 如果程序依赖的值相对固定,可取固定的值,或定义在map、filter等操作内部,或定义在scala object对象中。 如果依赖值需要程序调用时动态指定(以函数参数形式),则在map、filter等操作时,可不直接引用该成员变量,而是根据成员变量的值重新定义一个局部变量,这样map等算子就无需引用类的成员变量。

  • 对于依赖某类成员函数的情形 如果函数功能独立,可定义在scala object对象中(类似于Java中的static方法),这样就无需一来特定的类。

如果引用了某类的成员函数或变量,则需对相应的类做好序列化处理

首先该类继承Serializable接口,然后对于不能序列化的成员变量使用“@transent”标注,告诉编译器不需要序列化。 此外如果可以,可将依赖的变量独立放到一个小的class中,让这个class支持序列化,这样做可以减少网络传输量,提高效率。

参考资料

  • blog.csdn.net/javastart/a…

转载于:https://juejin.im/post/5b94994ee51d450ea2465058

Spark Troubleshooting - Task not serializable问题分析相关推荐

  1. spark学习-52-Spark的org.apache.spark.SparkException: Task not serializable

    1.概述 报错这个一般是org.apache.spark.SparkException: Task not serializable 17/12/06 14:20:10 INFO MemoryStor ...

  2. Spark运行程序异常信息: org.apache.spark.SparkException: Task not serializable 解决办法

    Spark运行程序异常信息: org.apache.spark.SparkException: Task not serializable 解决办法 参考文章: (1)Spark运行程序异常信息: o ...

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

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

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

    出现"task not serializable"这个错误,一般是因为在map.filter等的参数使用了外部的变量,但是这个变量不能序列化.特别是当引用了某个类(经常是当前类)的 ...

  5. Spark not serializable 异常分析及解决方案

    一.背景 在使用spark开发分布式数据计算作业过程中或多或少会遇到如下的错误: Serialization stack: object not serializable (class:class: ...

  6. Spark之Task原理分析

    在Spark中,一个应用程序要想被执行,肯定要经过以下的步骤:          从这个路线得知,最终一个job是依赖于分布在集群不同节点中的task,通过并行或者并发的运行来完成真正的工作.由此可见 ...

  7. Spark中Task数量的分析

    本文主要说一下Spark中Task相关概念.RDD计算时Task的数量.Spark Streaming计算时Task的数量. Task作为Spark作业执行的最小单位,Task的数量及运行快慢间接决定 ...

  8. 《深入理解Spark:核心思想与源码分析》——3.10节创建和启动ExecutorAllocationManager...

    本节书摘来自华章社区<深入理解Spark:核心思想与源码分析>一书中的第3章,第3.10节创建和启动ExecutorAllocationManager,作者耿嘉安,更多章节内容可以访问云栖 ...

  9. Spark的stage划分算法源码分析

    Spark Application中可以有不同的Action触发多个Job,也就是说一个Application中可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前 ...

最新文章

  1. tensorflow官方文档_开源分享:最好的TensorFlow入门教程
  2. 到底什么时候该使用MQ 1
  3. UrlDecode和base64
  4. C++ vector的用法
  5. 【数学基础】参数估计之极大似然估计
  6. leetcode 90. 子集 II 思考分析
  7. 支持高并发的IIS Web服务器常用设置 II
  8. sqlmap源码阅读
  9. 关于数字签名简要原理
  10. mysql环境变量配置还是不行_为什么要配置mysql环境变量
  11. 短信API接口demo示例-C#/Message/Send
  12. html 怎么让他变成圆角,html让图片变圆角
  13. AI视觉对抗之隐身T恤「AI前沿」
  14. 用python写一个解一元二次方程的类
  15. 基于STM32单片机的篮球计时记分器仿真设计
  16. 【阅读笔记】Dynamical time series analytics
  17. 武士数独求解思路+代码实现(部分)
  18. 2012-Linux-18(使U-BOOT能正确引导LINUX for 1_20 error,but...)-1
  19. 机器视觉之图像预处理
  20. js+canvas实现雨滴特效

热门文章

  1. php 函数返回值mixed,认识函数的类型、参数与返回值
  2. SAP QM初阶之启用了Multiple Specification功能后检验批的不同之处?
  3. 民营企业SAP项目客户的几种心态
  4. 人脸识别再遭弃用,美国之后这回轮到欧盟
  5. 人脸识别虽好,还需行业自律与法律监管有道
  6. 2020 年最具潜力 44 个顶级开源项目,涵盖 11 类 AI 学习框架、平台(值得收藏)
  7. 赚到!4个Python初学者必学的Numpy小技巧
  8. 做人工智能必看的45篇论文(附下载地址)
  9. 7 papers | 对抗样本前,BERT也不行;AutoML的商业实践综述
  10. 2019年度苏州之春摄影作品展