Uso de bibliotecas Python com o EMR Sem Servidor - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Uso de bibliotecas Python com o EMR Sem Servidor

Ao executar trabalhos do PySpark em aplicações do Amazon EMR Sem Servidor, empacote várias bibliotecas do Python como dependências. Para fazer isso, use recursos nativos do Python, crie um ambiente virtual ou configure diretamente os trabalhos do PySpark para usar bibliotecas Python. Esta página fala sobre cada abordagem.

Uso dos recursos nativos do Python

Ao definir a configuração a seguir, use o PySpark para carregar arquivos Python (.py), pacotes Python compactados (.zip) e arquivos Egg (.egg) para os executores do Spark.

--conf spark.submit.pyFiles=s3://amzn-s3-demo-bucket/EXAMPLE-PREFIX/<.py|.egg|.zip file>

Para obter mais detalhes sobre como usar ambientes virtuais do Python em trabalhos do PySpark, consulte Usar recursos nativos do PySpark.

Ao usar o Caderno do EMR, você pode disponibilizar a dependência do Python no seu Caderno executando o seguinte código:

%%configure -f { "conf": { "spark.submit.pyFiles":"s3:///amzn-s3-demo-bucket/EXAMPLE-PREFIX/<.py|.egg|.zip file> } }

Criação de um ambiente virtual Python

Para empacotar várias bibliotecas Python para um trabalho do PySpark, crie ambientes virtuais Python isolados.

  1. Para criar o ambiente virtual em Python, use os comandos a seguir. O exemplo mostrado instala os pacotes scipy e matplotlib em um pacote de ambiente virtual e copia o arquivo para um local do Amazon S3.

    Importante

    Você deve executar os comandos a seguir em um ambiente do Amazon Linux 2 similar com a mesma versão do Python usada no EMR Sem Servidor, ou seja, Python 3.7.10 para o Amazon EMR versão 6.6.0. Você encontra um exemplo de Dockerfile no repositório GitHub EMR Sem Servidor Samples.

    # 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. Envie o trabalho do Spark com suas propriedades definidas para usar o ambiente virtual do 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

    Observe que, se você não substituir o binário original do Python, a segunda configuração na sequência de configurações anterior será --conf spark.executorEnv.PYSPARK_PYTHON=python.

    Para saber mais sobre como usar ambientes virtuais do Python para trabalhos do PySpark, consulte Usar o Virtualenv. Para obter mais exemplos de como enviar trabalhos do Spark, consulte Uso das configurações do Spark ao executar trabalhos do EMR Sem Servidor.

Configuração de trabalhos do PySpark para usar bibliotecas Python

Com as versões 6.12.0 e posteriores do Amazon EMR, você pode configurar diretamente trabalhos do PySpark no EMR Sem Servidor para usar bibliotecas Python populares de ciência de dados, como pandas, NumPy e PyArrow sem nenhuma configuração adicional.

Os exemplos a seguir demonstram como empacotar cada biblioteca Python para um trabalho do PySpark.

NumPy

NumPy é uma biblioteca Python para computação científica que oferece matrizes e operações multidimensionais para matemática, classificação, simulação aleatória e estatísticas básicas. Para usar o NumPy, execute o seguinte comando:

import numpy
pandas

O pandas é uma biblioteca Python construída no NumPy. A biblioteca pandas fornece aos cientistas de dados estruturas de dados e ferramentas de análise de dados do DataFrame. Para usar o pandas, execute o seguinte comando:

import pandas
PyArrow

PyArrow é uma biblioteca Python que gerencia dados colunares na memória para melhorar a performance do trabalho. O PyArrow é baseado na especificação de desenvolvimento de várias linguagens do Apache Arrow, que é uma forma padrão de representar e trocar dados em um formato colunar. Para usar o PyArrow, execute o seguinte comando:

import pyarrow