Utilisation de bibliothèques Python avec EMR Serverless - Amazon EMR

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

Lorsque vous exécutez PySpark des tâches sur des applications Amazon EMR Serverless, vous pouvez empaqueter différentes bibliothèques Python sous forme de dépendances. Pour ce faire, vous pouvez utiliser les fonctionnalités natives de Python, créer un environnement virtuel ou configurer directement vos PySpark tâches pour utiliser les bibliothèques Python. Cette page couvre chaque approche.

Utilisation des fonctionnalités natives de Python

Lorsque vous définissez la configuration suivante, vous pouvez l'utiliser 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, consultez la section Utilisation des fonctionnalités PySpark natives.

Création d'un environnement virtuel Python

Pour empaqueter plusieurs bibliothèques Python pour une PySpark tâche, vous pouvez créer 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 pouvez trouver un exemple de Dockerfile dans le référentiel EMRServerless Samples. 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
  2. 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, consultez la section Utilisation de Virtualenv. Pour plus d'exemples sur la façon de soumettre des tâches Spark, consultezOffres d'emploi Spark.

Configuration des PySpark tâches pour utiliser les bibliothèques Python

Avec les EMR versions 6.12.0 et supérieures d'Amazon, vous pouvez configurer directement des PySpark tâches EMR sans serveur pour utiliser les bibliothèques Python de science des données les plus populaires, telles que Pandas, et ce NumPy, PyArrowsans aucune configuration supplémentaire.

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 DataFramedonné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