PySpark 概述#

日期: 2025 年 5 月 19 日 版本: 4.0.0

有用链接: 实时笔记本 | GitHub | 问题 | 示例 | 社区 | Stack Overflow | 开发者邮件列表 | 用户邮件列表

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

PySpark 将 Python 的易学性和易用性与 Apache Spark 的强大功能相结合,使所有熟悉 Python 的人都能处理和分析任意大小的数据。

PySpark 支持 Spark 的所有功能,例如 Spark SQL、DataFrames、Structured Streaming、机器学习 (MLlib) 和 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 和 DataFrames

Spark SQL 是 Apache Spark 中用于处理结构化数据的模块。它允许您将 SQL 查询与 Spark 程序无缝混合。通过 PySpark DataFrames,您可以使用 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 是一个可扩展且容错的流处理引擎,构建在 Spark SQL 引擎之上。您可以像在静态数据上表达批处理计算一样表达您的流计算。Spark SQL 引擎将负责增量和连续地运行它,并随着流数据的持续到达而更新最终结果。

机器学习 (MLlib)

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

Spark Core 和 RDDs

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

请注意,RDD API 是一种低级 API,使用起来可能比较困难,并且您无法获得 Spark 自动查询优化功能的优势。我们建议使用 DataFrames(参见上方Spark SQL 和 DataFrames)而不是 RDDs,因为它允许您更轻松地表达您的意图,并让 Spark 自动为您构建最有效的查询。

Spark Streaming(旧版)

Spark Streaming 是核心 Spark API 的扩展,可实现对实时数据流的可伸缩、高吞吐量、容错流处理。

请注意,Spark Streaming 是 Spark 流处理引擎的上一代。它是一个旧版项目,不再更新。Spark 中有一个更新、更易用的流处理引擎,名为Structured Streaming,您应该将其用于您的流应用程序和管道。