

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de bibliotecas de Python con EMR sin servidor
<a name="using-python-libraries"></a>

Cuando ejecute PySpark trabajos en aplicaciones Amazon EMR Serverless, empaquete varias bibliotecas de Python como dependencias. Para ello, utilice las funciones nativas de Python, cree un entorno virtual o configure directamente sus PySpark trabajos para utilizar las bibliotecas de Python. Esta página abarca cada enfoque.

## Uso de funciones nativas de Python
<a name="using-native-python-features"></a>

Cuando establezcas la siguiente configuración, úsala PySpark para cargar archivos de Python (`.py`), paquetes de Python comprimidos (`.zip`) y archivos Egg (`.egg`) a los ejecutores de Spark.

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

Para obtener más información sobre cómo utilizar los entornos virtuales de Python para los PySpark trabajos, consulte [Uso de funciones PySpark nativas](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-pyspark-native-features).

Al usar EMR Notebook, puede hacer que la dependencia de Python esté disponible en su cuaderno mediante la ejecución del siguiente código:

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

## Creación de un entorno virtual de Python
<a name="building-python-virtual-env"></a>

Para empaquetar varias bibliotecas de Python para un PySpark trabajo, cree entornos virtuales de Python aislados.

1. Para crear el entorno virtual de Python, ejecute los siguientes comandos. El ejemplo que se muestra instala los paquetes `scipy` y `matplotlib` en un paquete de entorno virtual y copia el archivo en una ubicación de Amazon S3.
**importante**  
Debe ejecutar los siguientes comandos en un entorno de Amazon Linux 2 similar con la misma versión de Python que utiliza en EMR sin servidor, es decir, Python 3.7.10 para Amazon EMR versión 6.6.0. Puede encontrar un ejemplo de Dockerfile en el repositorio de muestras sin servidor de [EMR.](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. Envíe el trabajo de Spark con sus propiedades configuradas para usar el entorno virtual de 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
   ```

   Tenga en cuenta que si no anula el binario de Python original, será `--conf spark.executorEnv.PYSPARK_PYTHON=python` la segunda configuración de la secuencia de ajustes anterior.

   Para obtener más información sobre cómo utilizar los entornos virtuales de Python para los PySpark trabajos, consulte [Uso de Virtualenv](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-virtualenv). Para ver más ejemplos de cómo enviar trabajos de Spark, consulte [Uso de configuraciones de Spark al ejecutar trabajos de EMR sin servidor](jobs-spark.md).

## Configuración de PySpark trabajos para usar bibliotecas de Python
<a name="configuring-pyspark-jobs"></a>

Con las versiones 6.12.0 y posteriores de Amazon EMR, puede configurar directamente los trabajos EMR Serverless PySpark para utilizar bibliotecas Python de ciencia de datos populares, como [pandas](https://pandas.pydata.org/docs/user_guide/index.html), y sin necesidad de configuración adicional. [NumPy[PyArrow](https://arrow.apache.org/docs/python/index.html)](https://numpy.org/doc/stable/user/index.html)

Los siguientes ejemplos muestran cómo empaquetar cada biblioteca de Python para un PySpark trabajo.

------
#### [ NumPy ]

NumPy es una biblioteca de Python para computación científica que ofrece matrices y operaciones multidimensionales para matemáticas, clasificación, simulación aleatoria y estadísticas básicas. Para utilizarla NumPy, ejecute el siguiente comando:

```
import numpy
```

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

pandas es una biblioteca de Python basada en NumPy. La biblioteca pandas proporciona a los científicos de datos estructuras de [DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html)datos y herramientas de análisis de datos. Para usar pandas, ejecute el siguiente comando:

```
import pandas
```

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

PyArrow es una biblioteca de Python que administra datos en columnas en memoria para mejorar el rendimiento laboral. PyArrow se basa en la especificación de desarrollo multilenguaje Apache Arrow, que es una forma estándar de representar e intercambiar datos en formato de columnas. Para usarlo PyArrow, ejecute el siguiente comando:

```
import pyarrow
```

------