PySpark-シリアライザー
シリアル化は、ApacheSparkのパフォーマンスチューニングに使用されます。ネットワーク経由で送信されるか、ディスクに書き込まれるか、メモリに保持されるすべてのデータは、シリアル化する必要があります。シリアル化は、コストのかかる操作で重要な役割を果たします。
PySparkは、パフォーマンスチューニング用のカスタムシリアライザーをサポートしています。次の2つのシリアライザーはPySparkでサポートされています-
MarshalSerializer
PythonのMarshalSerializerを使用してオブジェクトをシリアル化します。このシリアライザーはPickleSerializerよりも高速ですが、サポートするデータ型は少なくなります。
class pyspark.MarshalSerializer
PickleSerializer
PythonのPickleSerializerを使用してオブジェクトをシリアル化します。このシリアライザーは、ほぼすべての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]