PySpark 概述#

日期:2026 年 1 月 2 日 版本:4.1.1

实用链接在线 Notebook | GitHub | 问题跟踪 | 示例 | 社区 | Stack Overflow | 开发邮件列表 | 用户邮件列表

PySpark 是 Apache Spark 的 Python API。它使您能够在分布式环境中使用 Python 执行大规模的实时数据处理。它还提供了一个 PySpark shell,用于交互式地分析数据。

PySpark 结合了 Python 的易学易用性与 Apache Spark 的强大功能,使熟悉 Python 的用户能够处理和分析任意规模的数据。

PySpark 支持 Spark 的所有功能,如 Spark SQL、DataFrame、结构化流(Structured Streaming)、机器学习(MLlib)、流水线(Pipelines)和 Spark Core。

Python Spark Connect Client
Spark SQL Pandas API on Spark Streaming Machine Learning
Spark Core and RDDs

Python Spark Connect 客户端

Spark Connect 是 Apache Spark 中的一种客户端-服务器架构,它允许任何应用程序远程连接到 Spark 集群。PySpark 提供了 Spark Connect 服务器的客户端,使得 Spark 可以作为一种服务来使用。

Spark SQL 和 DataFrame

Spark SQL 是 Apache Spark 用于处理结构化数据的模块。它允许您将 SQL 查询与 Spark 程序无缝结合。利用 PySpark DataFrame,您可以使用 Python 和 SQL 高效地读取、写入、转换和分析数据。无论您使用 Python 还是 SQL,底层都会使用相同的执行引擎,因此您始终能充分发挥 Spark 的强大性能。

Spark 上的 Pandas API

Spark 上的 Pandas API 允许您通过跨多个节点进行分布式运行,将 pandas 工作负载扩展到任意规模。如果您已经熟悉 pandas 并希望利用 Spark 进行大数据处理,Spark 上的 pandas API 可以让您立即提高工作效率,并在无需修改代码的情况下迁移应用程序。您可以拥有一套既适用于 pandas(测试、较小数据集)又适用于 Spark(生产环境、分布式数据集)的代码库,并且可以轻松且无开销地在 pandas API 和 Spark 上的 Pandas API 之间切换。

Spark 上的 Pandas API 旨在简化从 pandas 到 Spark 的过渡,但如果您是 Spark 的新手或正在决定使用哪种 API,我们建议使用 PySpark(请参阅 Spark SQL 和 DataFrames)。

Structured Streaming

结构化流(Structured Streaming)是一个基于 Spark SQL 引擎构建的可扩展且容错的流处理引擎。您可以像编写静态数据的批处理计算一样编写流计算。Spark SQL 引擎将负责增量且持续地运行它,并在流数据不断到达时更新最终结果。

机器学习 (MLlib)

MLlib 构建于 Spark 之上,是一个可扩展的机器学习库,提供了一套统一的高级 API,帮助用户创建和调整实用的机器学习流水线。

声明式流水线 (Declarative Pipelines)

Spark 声明式流水线 (SDP) 是一个用于在 Spark 上构建可靠、可维护和可测试数据流水线的声明式框架。SDP 通过允许您专注于应用于数据的转换,而不是流水线执行的细节,从而简化了 ETL 开发。

Spark Core 和 RDD

Spark Core 是 Spark 平台底层的通用执行引擎,所有其他功能都构建在其之上。它提供了 RDD(弹性分布式数据集)和内存计算能力。

请注意,RDD API 属于低级 API,使用起来较为困难,且无法享受到 Spark 自动查询优化功能带来的好处。我们建议使用 DataFrame(请参阅上文 Spark SQL 和 DataFrames)而非 RDD,因为它能让您更轻松地表达意图,并让 Spark 自动为您构建最高效的查询。

Spark Streaming (旧版)

Spark Streaming 是核心 Spark API 的一个扩展,支持对实时数据流进行可扩展、高吞吐、容错的流处理。

请注意,Spark Streaming 是 Spark 上一代的流处理引擎。它是一个旧版项目,不再更新。Spark 中有一个更新、更易于使用的流处理引擎,称为 结构化流 (Structured Streaming),您应该在流处理应用程序和流水线中使用它。