本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Python 库与EMR无服务器一起使用
在 Amazon EMR 无服务器应用程序上运行 PySpark 作业时,您可以将各种 Python 库打包为依赖项。为此,您可以使用原生 Python 功能、构建虚拟环境或直接将 PySpark 作业配置为使用 Python 库。本页涵盖了每种方法。
使用原生 Python 功能
当你设置以下配置时,你可以使用 PySpark 将 Python 文件 (.py
)、压缩的 Python 包 (.zip
) 和 Egg 文件 (.egg
) 上传到 Spark 执行器。
--conf spark.submit.pyFiles=s3://
amzn-s3-demo-bucket
/EXAMPLE-PREFIX
/<.py|.egg|.zip file>
有关如何使用 Python 虚拟环境执行 PySpark 作业的更多详细信息,请参阅使用 PySpark 原生功能
构建 Python 虚拟环境
要为一项 PySpark 作业打包多个 Python 库,可以创建隔离的 Python 虚拟环境。
-
要构建 Python 虚拟环境,请使用以下命令。所示示例将软件包
scipy
和安装matplotlib
到虚拟环境包中,并将存档复制到 Amazon S3 位置。重要
你必须在类似的 Amazon Linux 2 环境中运行以下命令,该环境的 Python 版本与你在 EMR Serverless 中使用的 Python 版本相同,即适用于亚马EMR逊 6.6.0 版本的 Python 3.7.10。您可以在EMR无服务器
示例存储库中找到 Dockerfile 示例。 GitHub # initialize a python virtual environment python3 -m venv pyspark_venvsource source pyspark_venvsource/bin/activate # optionally, ensure pip is up-to-date pip3 install --upgrade pip # install the python packages pip3 install scipy pip3 install matplotlib # package the virtual environment into an archive pip3 install venv-pack venv-pack -f -o pyspark_venv.tar.gz # copy the archive to an S3 location aws s3 cp pyspark_venv.tar.gz s3://
amzn-s3-demo-bucket
/EXAMPLE-PREFIX
/ # optionally, remove the virtual environment directory rm -fr pyspark_venvsource -
提交 Spark 作业,并将您的属性设置为使用 Python 虚拟环境。
--conf spark.archives=s3://
amzn-s3-demo-bucket
/EXAMPLE-PREFIX
/pyspark_venv.tar.gz#environment --conf spark.emr-serverless.driverEnv.PYSPARK_DRIVER_PYTHON=./environment/bin/python --conf spark.emr-serverless.driverEnv.PYSPARK_PYTHON=./environment/bin/python --conf spark.executorEnv.PYSPARK_PYTHON=./environment/bin/python请注意,如果您不覆盖原始的 Python 二进制文件,则前面设置序列中的第二个配置将是
--conf spark.executorEnv.PYSPARK_PYTHON=python
。有关如何使用 Python 虚拟环境进行 PySpark 作业的更多信息,请参阅使用 Virtualenv
。有关如何提交 Spark 作业的更多示例,请参阅Spark 职位。
将 PySpark 作业配置为使用 Python 库
在 Amazon 6.12.0 及更高EMR版本中,您可以直接将EMR无服务器 PySpark作业配置为使用流行的数据科学 Python 库,例如 p andas NumPy
以下示例说明如何为 PySpark作业打包每个 Python 库。