PySpark - Serializzatori

La serializzazione viene utilizzata per l'ottimizzazione delle prestazioni su Apache Spark. Tutti i dati inviati in rete o scritti sul disco o conservati nella memoria devono essere serializzati. La serializzazione gioca un ruolo importante nelle operazioni costose.

PySpark supporta serializzatori personalizzati per l'ottimizzazione delle prestazioni. I seguenti due serializzatori sono supportati da PySpark:

MarshalSerializer

Serializza gli oggetti utilizzando Marshal Serializer di Python. Questo serializzatore è più veloce di PickleSerializer, ma supporta meno tipi di dati.

class pyspark.MarshalSerializer

PickleSerializer

Serializza gli oggetti usando Pickle Serializer di Python. Questo serializzatore supporta quasi tutti gli oggetti Python, ma potrebbe non essere veloce quanto i serializzatori più specializzati.

class pyspark.PickleSerializer

Vediamo un esempio sulla serializzazione di PySpark. Qui, serializziamo i dati utilizzando 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 - Il comando è il seguente -

$SPARK_HOME/bin/spark-submit serializing.py

Output - L'output del comando precedente è -

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