PySpark 序列化器

2025 年 1 月 31 日 | 2 分钟阅读

PySpark 序列化用于对 Apache Spark 进行调优。 PySpark 支持自定义序列化器来传输数据。 它有助于提高性能。 当我们在 RDD(Spark 的弹性分布式数据集)上执行函数时,需要对其进行序列化,以便可以将其发送到每个工作节点以在其数据段上执行。

map() 函数接受另一个函数作为需要序列化的参数。 在此函数中创建的对象; 这些对象也需要序列化。

所有通过网络传输的数据以写入磁盘或保留在内存中的数据都必须序列化。 序列化在执行复杂操作中起着至关重要的作用。

PySpark 支持以下两种类型的序列化。

  • MarshelSerializer
  • PickleSerializer

让我们详细了解 PySpark 序列化器的类型。

1. MarshalSerializer

MarshalSerializer 用于使用 PySpark 序列化对象。 它比 PickleSerializer 快,但仅支持少量数据类型。 序列化器必须在创建 SparkContext 时选择。

  • 实例方法

下面给出了 marshal 序列化器的实例方法

请看以下示例

输出

[0, 6, 9, 12, 15, 18, 21, 24, 27, 30]

PickleSerializer

PickelSerializer 用于序列化对象。 它支持几乎任何 Python 对象,尽管它不像专用序列化器那样快。 考虑以下代码

在上面的代码中,类 PickleSerializer 继承了 FramedSerializer 并在类中定义了 dump 方法。

  • 实例方法

下面给出了 pickle 序列化器的实例方法