PySpark - serializadores

A serialização é usada para ajuste de desempenho no Apache Spark. Todos os dados enviados pela rede, gravados no disco ou persistentes na memória devem ser serializados. A serialização desempenha um papel importante em operações caras.

O PySpark oferece suporte a serializadores personalizados para ajuste de desempenho. Os dois serializadores a seguir são compatíveis com PySpark -

MarshalSerializer

Serializa objetos usando Marshal Serializer do Python. Este serializador é mais rápido do que PickleSerializer, mas suporta menos tipos de dados.

class pyspark.MarshalSerializer

PickleSerializer

Serializa objetos usando o Pickle Serializer do Python. Este serializador suporta quase qualquer objeto Python, mas pode não ser tão rápido quanto serializadores mais especializados.

class pyspark.PickleSerializer

Vejamos um exemplo de serialização do PySpark. Aqui, serializamos os dados 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 - O comando é o seguinte -

$SPARK_HOME/bin/spark-submit serializing.py

Output - A saída do comando acima é -

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