Uso de diferentes versões do Python com o EMR Sem Servidor
Além do caso de uso em Uso de bibliotecas do Python com o EMR Sem Servidor, você também pode usar ambientes virtuais do Python para trabalhar com versões do Python diferentes da versão empacotada na versão do Amazon EMR para a aplicação do Amazon EMR. Para fazer isso, você deve criar um ambiente virtual do Python com a versão do Python que deseja usar.
Para enviar um trabalho de um ambiente virtual do Python
-
Crie seu ambiente virtual com os comandos do exemplo a seguir. Este exemplo instala o Python 3.9.9 em um pacote de ambiente virtual e copia o arquivo para um local do Amazon S3.
Importante
Se você usa o Amazon EMR nas versões 7.0.0 e superiores, você deve executar seus comandos em um ambiente do Amazon Linux 2023 semelhante ao que você usa nas aplicações do EMR Sem Servidor.
Se você usa a versão 6.15.0 ou inferior, deve executar os comandos a seguir em um ambiente do Amazon Linux 2 similar.
# 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
-
Defina suas propriedades para usar o ambiente virtual do Python e enviar o trabalho do 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
Para saber mais sobre como usar ambientes virtuais do Python para trabalhos do PySpark, consulte Using Virtualenv