PySpark - Serializadores

La serialización se usa para ajustar el rendimiento en Apache Spark. Todos los datos que se envían a través de la red o se escriben en el disco o que se conservan en la memoria deben serializarse. La serialización juega un papel importante en operaciones costosas.

PySpark admite serializadores personalizados para ajustar el rendimiento. Los siguientes dos serializadores son compatibles con PySpark:

MarshalSerializer

Serializa objetos usando el serializador Marshal de Python. Este serializador es más rápido que PickleSerializer, pero admite menos tipos de datos.

class pyspark.MarshalSerializer

PickleSerializer

Serializa objetos usando el serializador Pickle de Python. Este serializador admite casi cualquier objeto de Python, pero puede que no sea tan rápido como los serializadores más especializados.

class pyspark.PickleSerializer

Veamos un ejemplo sobre la serialización de PySpark. Aquí, serializamos los datos usando MarshalSerializer.

--------------------------------------serializing.py-------------------------------------
from pyspark.context import SparkContext
from pyspark.serializers import MarshalSerializer
sc = SparkContext("local", "serialization app", serializer = MarshalSerializer())
print(sc.parallelize(list(range(1000))).map(lambda x: 2 * x).take(10))
sc.stop()
--------------------------------------serializing.py-------------------------------------

Command - El comando es el siguiente -

$SPARK_HOME/bin/spark-submit serializing.py

Output - La salida del comando anterior es -

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]