PySpark - Sérialiseurs

La sérialisation est utilisée pour le réglage des performances sur Apache Spark. Toutes les données envoyées sur le réseau ou écrites sur le disque ou conservées dans la mémoire doivent être sérialisées. La sérialisation joue un rôle important dans les opérations coûteuses.

PySpark prend en charge les sérialiseurs personnalisés pour le réglage des performances. Les deux sérialiseurs suivants sont pris en charge par PySpark -

MarshalSerializer

Sérialise les objets à l'aide du sérialiseur Marshal de Python. Ce sérialiseur est plus rapide que PickleSerializer, mais prend en charge moins de types de données.

class pyspark.MarshalSerializer

PickleSerializer

Sérialise les objets à l'aide du sérialiseur Pickle de Python. Ce sérialiseur prend en charge presque tous les objets Python, mais peut ne pas être aussi rapide que les sérialiseurs plus spécialisés.

class pyspark.PickleSerializer

Voyons un exemple sur la sérialisation PySpark. Ici, nous sérialisons les données à l'aide de 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 - La commande est la suivante -

$SPARK_HOME/bin/spark-submit serializing.py

Output - La sortie de la commande ci-dessus est -

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