PySpark - Serileştiriciler

Serileştirme, Apache Spark'ta performans ayarı yapmak için kullanılır. Ağ üzerinden gönderilen veya diske yazılan veya bellekte kalan tüm veriler serileştirilmelidir. Serileştirme, maliyetli işlemlerde önemli bir rol oynar.

PySpark, performans ayarı için özel serileştiricileri destekler. Aşağıdaki iki serileştirici PySpark tarafından desteklenmektedir -

MarshalSerializer

Python'un Marshal Serileştiricisini kullanarak nesneleri seri hale getirir. Bu serileştirici, PickleSerializer'dan daha hızlıdır, ancak daha az veri türünü destekler.

class pyspark.MarshalSerializer

PickleSerializer

Python'un Pickle Serileştiricisini kullanarak nesneleri seri hale getirir. Bu serileştirici neredeyse tüm Python nesnelerini destekler, ancak daha özel serileştiriciler kadar hızlı olmayabilir.

class pyspark.PickleSerializer

PySpark serileştirme üzerine bir örnek görelim. Burada, verileri MarshalSerializer kullanarak seri hale getiriyoruz.

--------------------------------------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 - Komut aşağıdaki gibidir -

$SPARK_HOME/bin/spark-submit serializing.py

Output - Yukarıdaki komutun çıktısı -

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