spark序列化问题

1.Spark的transformation操作为什么需要序列化?

Spark是分布式执行引擎,其核心抽象是弹性分布式数据集RDD,其代表了分布在不同节点的数据。Spark的计算是在executor上分布式执行的,故用户开发的关于RDD的map,flatMap,reduceByKey等transformation 操作(闭包)有如下执行过程:

1. 代码中对象在driver本地序列化

2. 对象序列化后传输到远程executor节点

3. 远程executor节点反序列化对象

4. 最终远程节点执行

故对象在执行中需要序列化通过网络传输,则必须经过序列化过程。

2.如何解决Spark序列化问题?

如果出现NotSerializableException报错,可以在spark-default.xml文件中加入如下参数来开启SerializationDebugger功能类,从而可以在日志中打印出序列化出问题的类和属性信息。

spark.executor.extraJavaOptions-Dsun.io.serialization.extendedDebugInfo=true

spark.driver.extraJavaOption-Dsun.io.serialization.extendedDebugInfo=true

3.序列化案例代码讲解

转载:http://blog.csdn.net/u011491148/article/details/46910803

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容