PySpark - Сериализаторы

Сериализация используется для настройки производительности в Apache Spark. Все данные, которые отправляются по сети, записываются на диск или сохраняются в памяти, должны быть сериализованы. Сериализация играет важную роль в дорогостоящих операциях.

PySpark поддерживает настраиваемые сериализаторы для настройки производительности. PySpark поддерживает следующие два сериализатора -

MarshalSerializer

Сериализует объекты с помощью Python Marshal Serializer. Этот сериализатор быстрее, чем PickleSerializer, но поддерживает меньше типов данных.

class pyspark.MarshalSerializer

PickleSerializer

Сериализует объекты с помощью Python Pickle Serializer. Этот сериализатор поддерживает практически любой объект Python, но может быть не таким быстрым, как более специализированные сериализаторы.

class pyspark.PickleSerializer

Давайте посмотрим на пример сериализации PySpark. Здесь мы сериализуем данные с помощью 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 - Команда следующая -

$SPARK_HOME/bin/spark-submit serializing.py

Output- Результат выполнения вышеуказанной команды -

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