安装#
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 预构建的 Spark3
:为 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 开发),最好通过 Miniconda 或 Miniforge 安装。该工具是跨平台且语言无关的,在实践中,conda 可以替代 pip 和 virtualenv。
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 所需 |
增强功能但未包含在安装包中的额外库
mlflow:
pyspark.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 所需 |