PySpark - serializatory

Serializacja jest używana do dostrajania wydajności w Apache Spark. Wszystkie dane przesyłane przez sieć lub zapisywane na dysku lub utrwalane w pamięci powinny być serializowane. Serializacja odgrywa ważną rolę w kosztownych operacjach.

PySpark obsługuje niestandardowe serializatory do dostrajania wydajności. Poniższe dwa serializatory są obsługiwane przez PySpark -

MarshalSerializer

Serializuje obiekty przy użyciu programu Marshal Serializer w języku Python. Ten serializator jest szybszy niż PickleSerializer, ale obsługuje mniej typów danych.

class pyspark.MarshalSerializer

PickleSerializer

Serializuje obiekty przy użyciu Pythona Pickle Serializer. Ten serializator obsługuje prawie każdy obiekt Pythona, ale może nie być tak szybki, jak bardziej wyspecjalizowane serializatory.

class pyspark.PickleSerializer

Zobaczmy przykład serializacji PySpark. Tutaj serializujemy dane przy użyciu 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 - Polecenie jest następujące -

$SPARK_HOME/bin/spark-submit serializing.py

Output - Wynik powyższego polecenia to -

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