序列化用于Apache Spark的性能调优.通过网络发送或写入磁盘或持久存储在内存中的所有数据都应序列化.序列化在昂贵的操作中起着重要作用.
PySpark支持用于性能调优的自定义序列化程序. PySpark支持以下两个序列化器 :
MarshalSerializer
使用Python的Marshal Serializer序列化对象.此序列化器比PickleSerializer更快,但支持更少的数据类型.
class pyspark.MarshalSerializer
PickleSerializer
使用Python的Pickle Serializer序列化对象.这个序列化程序几乎支持任何Python对象,但可能没有更专业的序列化程序那么快.
class pyspark.PickleSerializer
让我们看一下PySpark序列化的例子.在这里,我们使用MarshalSerializer序列化数据.
------------------------ -------------- serializing.py --------------------------------- ----来自pyspark.context的from pyspark.context import SparkContextfrom pyspark.serializers import MarshalSerializersc = SparkContext("local", "serialization app", serializer = MarshalSerializer())print(sc.parallelize(list(range(1000))).map(lambda x: 2 * x).take(10))sc.stop() ------ -------------------------------- serializing.py --------------- ----------------------
命令 : 该命令如下 :
$ SPARK_HOME/bin/spark-submit serializing.py
输出 : 上述命令的输出是 :
[0,2,4,6,8,10,12,14,16,18 ]