

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation de bibliothèques Python avec EMR Serverless
<a name="using-python-libraries"></a>

Lorsque vous exécutez PySpark des tâches sur des applications Amazon EMR Serverless, empaquetez différentes bibliothèques Python en tant que dépendances. Pour ce faire, utilisez les fonctionnalités natives de Python, créez un environnement virtuel ou configurez directement vos PySpark tâches pour utiliser les bibliothèques Python. Cette page couvre chaque approche.

## Utilisation des fonctionnalités natives de Python
<a name="using-native-python-features"></a>

Lorsque vous définissez la configuration suivante, utilisez-la PySpark pour télécharger des fichiers Python (`.py`), des packages Python compressés (`.zip`) et des fichiers Egg (`.egg`) vers les exécuteurs Spark.

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

Pour plus de détails sur l'utilisation des environnements virtuels Python pour les PySpark tâches, reportez-vous à la section [Utilisation des fonctionnalités PySpark natives](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-pyspark-native-features).

Lorsque vous utilisez EMR Notebook, vous pouvez rendre la dépendance Python disponible dans votre bloc-notes en exécutant le code suivant :

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

## Création d'un environnement virtuel Python
<a name="building-python-virtual-env"></a>

Pour empaqueter plusieurs bibliothèques Python pour une PySpark tâche, créez des environnements virtuels Python isolés.

1. Pour créer l'environnement virtuel Python, utilisez les commandes suivantes. L'exemple illustré installe les packages `scipy` `matplotlib` dans un environnement virtuel et copie l'archive vers un emplacement Amazon S3.
**Important**  
Vous devez exécuter les commandes suivantes dans un environnement Amazon Linux 2 similaire avec la même version de Python que celle que vous utilisez dans EMR Serverless, c'est-à-dire Python 3.7.10 pour Amazon EMR version 6.6.0. Vous trouverez un exemple de Dockerfile dans le référentiel [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. Soumettez la tâche Spark avec vos propriétés définies pour utiliser l'environnement virtuel 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
   ```

   Notez que si vous ne remplacez pas le binaire Python d'origine, la deuxième configuration de la séquence de paramètres précédente sera `--conf spark.executorEnv.PYSPARK_PYTHON=python` la suivante.

   Pour en savoir plus sur l'utilisation des environnements virtuels Python pour les PySpark tâches, reportez-vous à la section [Utilisation de Virtualenv](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-virtualenv). Pour plus d'exemples sur la façon de soumettre des tâches Spark, reportez-vous à[Utilisation des configurations Spark lorsque vous exécutez des tâches EMR sans serveur](jobs-spark.md).

## Configuration des PySpark tâches pour utiliser les bibliothèques Python
<a name="configuring-pyspark-jobs"></a>

Avec les versions 6.12.0 et supérieures d'Amazon EMR, vous pouvez configurer directement les tâches EMR Serverless PySpark pour utiliser les bibliothèques Python de science des données les plus populaires, telles [que Pandas](https://pandas.pydata.org/docs/user_guide/index.html), et ce, sans aucune configuration supplémentaire. [NumPy[PyArrow](https://arrow.apache.org/docs/python/index.html)](https://numpy.org/doc/stable/user/index.html)

Les exemples suivants montrent comment empaqueter chaque bibliothèque Python pour une PySpark tâche.

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

NumPy est une bibliothèque Python pour le calcul scientifique qui propose des tableaux multidimensionnels et des opérations pour les mathématiques, le tri, la simulation aléatoire et les statistiques de base. Pour l'utiliser NumPy, exécutez la commande suivante :

```
import numpy
```

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

pandas est une bibliothèque Python construite sur NumPy. La bibliothèque Pandas fournit aux scientifiques des structures de [DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html)données et des outils d'analyse de données. Pour utiliser les pandas, exécutez la commande suivante :

```
import pandas
```

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

PyArrow est une bibliothèque Python qui gère les données colonnaires en mémoire pour améliorer les performances au travail. PyArrow est basé sur la spécification de développement multilingue Apache Arrow, qui est un moyen standard de représenter et d'échanger des données dans un format en colonnes. Pour l'utiliser PyArrow, exécutez la commande suivante :

```
import pyarrow
```

------