PySpark - Serializers

Serialization ใช้สำหรับการปรับแต่งประสิทธิภาพบน Apache Spark ข้อมูลทั้งหมดที่ส่งผ่านเครือข่ายหรือเขียนลงดิสก์หรือคงอยู่ในหน่วยความจำควรเป็นแบบอนุกรม การทำให้เป็นอนุกรมมีบทบาทสำคัญในการดำเนินการที่มีค่าใช้จ่ายสูง

PySpark รองรับ Serializers ที่กำหนดเองสำหรับการปรับแต่งประสิทธิภาพ PySpark รองรับ Serializers สองตัวต่อไปนี้ -

MarshalSerializer

ทำให้วัตถุเป็นอนุกรมโดยใช้ Marshal Serializer ของ Python Serializer นี้เร็วกว่า PickleSerializer แต่รองรับประเภทข้อมูลน้อยกว่า

class pyspark.MarshalSerializer

PickleSerializer

ทำให้วัตถุเป็นอนุกรมโดยใช้ Pickle Serializer ของ Python Serializer นี้รองรับออบเจ็กต์ Python เกือบทุกชนิด แต่อาจไม่เร็วเท่ากับ serializers เฉพาะทาง

class pyspark.PickleSerializer

ให้เราดูตัวอย่างใน PySpark serialization ที่นี่เราจัดลำดับข้อมูลโดยใช้ 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]