本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 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 虛擬環境。
-
若要建置 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 -
使用 屬性集提交 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
下列範例示範如何封裝任務的每個 Python PySpark程式庫。