安装#

PySpark 包含在 Apache Spark 网站上提供的 Spark 官方版本中。对于 Python 用户,PySpark 还提供了从 PyPI 进行 pip 安装的功能。这通常用于本地使用或作为连接到集群的客户端,而不是用于设置集群本身。

本页包含使用 pip、Conda、手动下载和从源代码构建来安装 PySpark 的说明。

支持的 Python 版本#

Python 3.9 及更高版本。

使用 PyPI#

使用 PyPI (pyspark) 安装 PySpark 如下所示

pip install pyspark

如果您想为特定组件安装额外的依赖项,可以按如下方式安装

# Spark SQL
pip install pyspark[sql]
# pandas API on Spark
pip install pyspark[pandas_on_spark] plotly  # to plot your data, you can install plotly together.
# Spark Connect
pip install pyspark[connect]

有关额外依赖项的更多详细信息,请参阅可选依赖项

对于带有/不带特定 Hadoop 版本的 PySpark,您可以使用 PYSPARK_HADOOP_VERSION 环境变量进行安装,如下所示

PYSPARK_HADOOP_VERSION=3 pip install pyspark

默认发行版使用 Hadoop 3.3 和 Hive 2.3。如果用户指定不同版本的 Hadoop,pip 安装将自动下载不同版本并在 PySpark 中使用。下载可能需要一些时间,具体取决于网络和选择的镜像。PYSPARK_RELEASE_MIRROR 可以设置为手动选择镜像以加快下载速度。

PYSPARK_RELEASE_MIRROR=http://mirror.apache-kr.org PYSPARK_HADOOP_VERSION=3 pip install

建议在 pip 中使用 -v 选项来跟踪安装和下载状态。

PYSPARK_HADOOP_VERSION=3 pip install pyspark -v

PYSPARK_HADOOP_VERSION 中支持的值为

  • without:使用用户提供的 Apache Hadoop 预构建的 Spark

  • 3:为 Apache Hadoop 3.3 及更高版本预构建的 Spark(默认)

请注意,这种带有/不带特定 Hadoop 版本的 PySpark 安装是实验性的。它可能会在次要版本之间更改或移除。

将 Spark Connect 设为默认值#

如果您想将 Spark Connect 设为默认,可以通过 PyPI (pyspark-connect) 安装一个额外的库,执行以下命令

pip install pyspark-connect

它将自动安装 pyspark 库以及 Spark Connect 所需的依赖项。如果您想自定义 pyspark,您需要提前按照上述说明安装 pyspark

此软件包同时支持带有本地运行的 Spark Connect 服务器的 spark.master (--master) 和 spark.remote (--remote),包括本地集群(例如 local[*])以及连接 URI(例如 sc://localhost)。有关如何使用它,请参阅 快速入门:Spark Connect

Python Spark Connect 客户端#

Python Spark Connect 客户端是一个纯 Python 库,不依赖于您环境中的任何非 Python 依赖项,例如 jar 和 JRE。要通过 PyPI (pyspark-client) 安装 Python Spark Connect 客户端,请执行以下命令

pip install pyspark-client

此软件包仅支持带有连接 URI 的 spark.remote,例如 sc://localhost。有关如何使用它,请参阅 快速入门:Spark Connect

使用 Conda#

Conda 是一个开源的包管理和环境管理系统(由 Anaconda 开发),最好通过 MinicondaMiniforge 安装。该工具是跨平台且语言无关的,在实践中,conda 可以替代 pipvirtualenv

Conda 使用所谓的通道来分发包,除了 Anaconda 自带的默认通道外,最重要的通道是 conda-forge,这是一个由社区驱动的打包工作,它最广泛且最新(在大多数情况下也作为 Anaconda 通道的上游)。

要从您的终端创建并激活新的 conda 环境,请按以下步骤操作

conda create -n pyspark_env
conda activate pyspark_env

激活环境后,使用以下命令安装 pyspark、您选择的 Python 版本以及您希望在与 pyspark 相同的会话中使用的其他包(您也可以分几步安装)。

conda install -c conda-forge pyspark  # can also add "python=3.9 some_package [etc.]" here

请注意,适用于 Conda 的 PySpark 由社区单独维护;虽然新版本通常会很快打包,但通过 Conda(-forge) 的可用性与 PySpark 发布周期并非直接同步。

虽然在 Conda 环境中使用 pip 在技术上是可行的(与上述命令相同),但这种方法是不推荐的,因为 pip 不与 Conda 互操作。

有关有用的 conda 命令的简短摘要,请参阅其备忘单

手动下载#

PySpark 包含在 Apache Spark 网站上提供的发行版中。您可以从该网站下载您想要的发行版。之后,将 tar 文件解压缩到您想要安装 Spark 的目录中,例如,如下所示

tar xzvf spark-\ |release|\-bin-hadoop3.tgz

确保 SPARK_HOME 环境变量指向 tar 文件解压缩的目录。更新 PYTHONPATH 环境变量,使其能够在 SPARK_HOME/python/lib 下找到 PySpark 和 Py4J。示例如下所示

cd spark-\ |release|\-bin-hadoop3
export SPARK_HOME=`pwd`
export PYTHONPATH=$(ZIPS=("$SPARK_HOME"/python/lib/*.zip); IFS=:; echo "${ZIPS[*]}"):$PYTHONPATH

从源代码安装#

要从源代码安装 PySpark,请参阅 构建 Spark

依赖项#

所需依赖项#

PySpark 需要以下依赖项。

支持的版本

注意

py4j

>=0.10.9.9

与 JVM 交互所需

增强功能但未包含在安装包中的额外库

  • memory-profiler:用于 PySpark UDF 内存分析,spark.profile.show(...)spark.sql.pyspark.udf.profiler

  • plotly:用于 PySpark 绘图,DataFrame.plot

请注意,PySpark 需要 Java 17 或更高版本,并正确设置 JAVA_HOME,请参阅 下载

可选依赖项#

PySpark 有几个可选依赖项,可以增强其特定模块的功能。这些依赖项仅在某些功能中需要,对于 PySpark 的基本功能不是必需的。如果未安装这些可选依赖项,PySpark 的基本操作将正常工作,但当您尝试使用需要这些依赖项的功能时,将引发 ImportError

Spark Connect#

可通过 pip install "pyspark[connect]" 安装。

支持的版本

注意

pandas

>=2.0.0

Spark Connect 所需

pyarrow

>=11.0.0

Spark Connect 所需

grpcio

>=1.67.0

Spark Connect 所需

grpcio-status

>=1.67.0

Spark Connect 所需

googleapis-common-protos

>=1.65.0

Spark Connect 所需

graphviz

>=0.20

Spark Connect 可选

Spark SQL#

可通过 pip install "pyspark[sql]" 安装。

支持的版本

注意

pandas

>=2.0.0

Spark SQL 所需

pyarrow

>=11.0.0

Spark SQL 所需

增强功能但未包含在安装包中的额外库

  • flameprof:为 UDF 性能分析提供默认渲染器。

Spark 上的 Pandas API#

可通过 pip install "pyspark[pandas_on_spark]" 安装。

支持的版本

注意

pandas

>=2.2.0

Spark 上的 Pandas API 所需

pyarrow

>=11.0.0

Spark 上的 Pandas API 所需

增强功能但未包含在安装包中的额外库

  • mlflowpyspark.pandas.mlflow 所需。

  • plotly:提供用于可视化的绘图功能。建议使用 plotly 而非 matplotlib

  • matplotlib:提供用于可视化的绘图功能。默认是 plotly

基于 DataFrame 的 MLlib API#

可通过 pip install "pyspark[ml]" 安装。

支持的版本

注意

numpy

>=1.21

基于 DataFrame 的 MLlib API 所需

增强功能但未包含在安装包中的额外库

  • scipy:SciPy 集成所需。

  • scikit-learn:实现机器学习算法所需。

  • torch:机器学习模型训练所需。

  • torchvision:支持图像和视频处理所需。

  • torcheval:方便模型评估指标所需。

  • deepspeed:提供高性能模型训练优化所需。可在非 Darwin 系统上安装。

MLlib#

可通过 pip install "pyspark[mllib]" 安装。

支持的版本

注意

numpy

>=1.21

MLlib 所需