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

你可能感兴趣的:(spark序列化问题)