将 Python 库与EMR无服务器一起使用 - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 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 虚拟环境。

  1. 要构建 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
  2. 提交 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、,而PyArrow无需进行任何其他设置。

以下示例说明如何为 PySpark作业打包每个 Python 库。

NumPy

NumPy 是一个用于科学计算的 Python 库,它为数学、排序、随机模拟和基本统计提供多维数组和运算。要使用 NumPy,请运行以下命令:

import numpy
pandas

pandas 是一个 Python 库,它建立在. NumPy 熊猫图书馆为数据科学家提供了DataFrame数据结构和数据分析工具。要使用 pandas,请运行以下命令:

import pandas
PyArrow

PyArrow 是一个 Python 库,用于管理内存中的列式数据以提高工作性能。 PyArrow 基于 Apache Arrow 跨语言开发规范,这是一种以列式格式表示和交换数据的标准方法。要使用 PyArrow,请运行以下命令:

import pyarrow