將 Python 程式庫與 EMR Serverless 搭配使用 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 Python 程式庫與 EMR Serverless 搭配使用

當您在 Amazon EMR Serverless 應用程式上執行 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>

如需如何針對 PySpark 任務使用 Python 虛擬環境的詳細資訊,請參閱使用 PySpark 原生功能

建置 Python 虛擬環境

若要封裝 PySpark 任務的多個 Python 程式庫,您可以建立隔離的 Python 虛擬環境。

  1. 若要建置 Python 虛擬環境,請使用下列命令。顯示的範例會將套件 scipy和 安裝matplotlib到虛擬環境套件中,並將封存檔複製到 Amazon S3 位置。

    重要

    您必須在類似 Amazon Linux 2 環境中執行下列命令,其 Python 版本與EMR在 Serverless 中使用的 Python 版本相同,即適用於 Amazon 6.6.0 EMR版的 Python 3.7.10。您可以在 EMR Serverless Samples GitHub 儲存庫中找到範例 Dockerfile。

    # 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

    如需如何針對 PySpark 任務使用 Python 虛擬環境的詳細資訊,請參閱使用 Virtualenv 。如需如何提交 Spark 任務的更多範例,請參閱 Spark 任務

設定 PySpark 任務以使用 Python 程式庫

使用 Amazon 6.12.0 及更高EMR版本,您可以直接設定無EMR PySpark伺服器任務,以使用熱門的資料科學 Python 程式庫,例如 pandas NumPy、 和 ,PyArrow而不需要任何其他設定。

下列範例示範如何封裝任務的每個 Python PySpark程式庫。

NumPy

NumPy 是適用於科學運算的 Python 程式庫,提供數學、排序、隨機模擬和基本統計資料的多維陣列和操作。若要使用 NumPy,請執行下列命令:

import numpy
pandas

pandas 是建置在 之上的 Python 程式庫 NumPy。Pandas 程式庫為資料科學家提供DataFrame資料結構和資料分析工具。若要使用 panda,請執行下列命令:

import pandas
PyArrow

PyArrow 是 Python 程式庫,可管理記憶體內資料欄,以提高任務效能。 PyArrow 是以 Apache Arrow 跨語言開發規格為基礎,這是以資料欄格式表示和交換資料的標準方法。若要使用 PyArrow,請執行下列命令:

import pyarrow