EMR Serverless でのさまざまな Python バージョンの使用 - Amazon EMR

EMR Serverless でのさまざまな Python バージョンの使用

EMR Serverless での Python ライブラリの使用 のユースケースに加えて、Python 仮想環境を使用して、Amazon EMR Serverless アプリケーションの Amazon EMR リリースでパッケージ化されたバージョンとは異なる Python バージョンを扱うこともできます。これを行うには、使用する Python バージョンで Python 仮想環境を構築する必要があります。

Python 仮想環境からジョブを送信するには
  1. 次の例のコマンドを使用して仮想環境を構築します。この例では、Python 3.9.9 を仮想環境パッケージにインストールし、アーカイブを Amazon S3 の場所にコピーします。

    重要

    Amazon EMR リリース 7.0.0 以降を使用する場合は、EMR Serverless アプリケーションで使用するのと同様の Amazon Linux 2023 環境でコマンドを実行する必要があります。

    リリース 6.15.0 以前を使用する場合は、同様の Amazon Linux 2 環境で次のコマンドを実行する必要があります。

    # install Python 3.9.9 and activate the venv yum install -y gcc openssl-devel bzip2-devel libffi-devel tar gzip wget make wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz && \ tar xzf Python-3.9.9.tgz && cd Python-3.9.9 && \ ./configure --enable-optimizations && \ make altinstall # create python venv with Python 3.9.9 python3.9 -m venv pyspark_venv_python_3.9.9 --copies source pyspark_venv_python_3.9.9/bin/activate # copy system python3 libraries to venv cp -r /usr/local/lib/python3.9/* ./pyspark_venv_python_3.9.9/lib/python3.9/ # package venv to archive. # **Note** that you have to supply --python-prefix option # to make sure python starts with the path where your # copied libraries are present. # Copying the python binary to the "environment" directory. pip3 install venv-pack venv-pack -f -o pyspark_venv_python_3.9.9.tar.gz --python-prefix /home/hadoop/environment # stage the archive in S3 aws s3 cp pyspark_venv_python_3.9.9.tar.gz s3://<path> # optionally, remove the virtual environment directory rm -fr pyspark_venv_python_3.9.9
  2. Python 仮想環境を使用するようにプロパティを設定し、Spark ジョブを送信します。

    # note that the archive suffix "environment" is the same as the directory where you copied the Python binary. --conf spark.archives=s3://amzn-s3-demo-bucket/EXAMPLE-PREFIX/pyspark_venv_python_3.9.9.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

PySpark ジョブに Python 仮想環境を使用する方法の詳細については、「Using Virtualenv」を参照してください。Spark ジョブを送信する方法の例については、「EMR Serverless ジョブ実行時の Spark 設定の使用」を参照してください。