PySpark - Serializers

Serialization được sử dụng để điều chỉnh hiệu suất trên Apache Spark. Tất cả dữ liệu được gửi qua mạng hoặc ghi vào đĩa hoặc vẫn còn trong bộ nhớ phải được tuần tự hóa. Tuần tự hóa đóng một vai trò quan trọng trong các hoạt động tốn kém.

PySpark hỗ trợ bộ tuần tự hóa tùy chỉnh để điều chỉnh hiệu suất. Hai bộ tuần tự sau được hỗ trợ bởi PySpark:

MarshalSerializer

Sắp xếp thứ tự các đối tượng bằng cách sử dụng Bộ chỉnh tuần tự của Python. Bộ tuần tự này nhanh hơn PickleSerializer, nhưng hỗ trợ ít kiểu dữ liệu hơn.

class pyspark.MarshalSerializer

PickleSerializer

Serialize các đối tượng bằng cách sử dụng Pickle Serializer của Python. Bộ tuần tự này hỗ trợ gần như bất kỳ đối tượng Python nào, nhưng có thể không nhanh bằng các trình tuần tự chuyên dụng hơn.

class pyspark.PickleSerializer

Hãy để chúng tôi xem một ví dụ về tuần tự hóa PySpark. Ở đây, chúng tôi tuần tự hóa dữ liệu bằng 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 - Lệnh như sau:

$SPARK_HOME/bin/spark-submit serializing.py

Output - Đầu ra của lệnh trên là -

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