

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
<a name="using-python-libraries"></a>

Ao executar PySpark trabalhos em aplicativos sem servidor do Amazon EMR, empacote várias bibliotecas Python como dependências. Para fazer isso, use recursos nativos do Python, crie um ambiente virtual ou configure diretamente seus PySpark trabalhos para usar bibliotecas do Python. Esta página fala sobre cada abordagem.

## Uso dos recursos nativos do Python
<a name="using-native-python-features"></a>

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

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

Para obter mais detalhes sobre como usar ambientes virtuais Python para PySpark trabalhos, consulte [Usando recursos PySpark nativos](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-pyspark-native-features).

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
<a name="building-python-virtual-env"></a>

Para empacotar várias bibliotecas Python para um PySpark trabalho, 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ê pode encontrar um exemplo de Dockerfile no repositório [EMR Serverless Samples.](https://github.com/aws-samples/emr-serverless-samples/tree/main/examples/pyspark/dependencies) GitHub 

   ```
   # 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
   ```

1. 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 Python para PySpark trabalhos, consulte [Usando](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-virtualenv) 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](jobs-spark.md).

## Configurando PySpark trabalhos para usar bibliotecas Python
<a name="configuring-pyspark-jobs"></a>

[Com as versões 6.12.0 e posteriores do Amazon EMR, você pode configurar diretamente trabalhos do EMR Serverless PySpark para usar bibliotecas Python populares de ciência de dados, como pandas, e sem nenhuma configuração adicional. [NumPy[PyArrow](https://arrow.apache.org/docs/python/index.html)](https://numpy.org/doc/stable/user/index.html)](https://pandas.pydata.org/docs/user_guide/index.html)

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

------
#### [ 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 NumPy, execute o seguinte comando:

```
import numpy
```

------
#### [ pandas ]

pandas é uma biblioteca Python baseada em. NumPy A biblioteca pandas fornece aos cientistas de dados estruturas de [DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html)dados e ferramentas de análise de dados. Para usar o pandas, execute o seguinte comando:

```
import pandas
```

------
#### [ PyArrow ]

PyArrow é uma biblioteca Python que gerencia dados colunares na memória para melhorar o desempenho no trabalho. PyArrow é baseado na especificação de desenvolvimento multilíngue Apache Arrow, que é uma forma padrão de representar e trocar dados em um formato colunar. Para usar PyArrow, execute o seguinte comando:

```
import pyarrow
```

------