Comment éliminer l’erreur ModuleNotFoundError sur un bloc-notes Amazon SageMaker qui exécute le noyau Sparkmagic ?

Date de la dernière mise à jour : 15/06/2020

J'essaie d'exécuter une instance de bloc-notes Amazon SageMaker avec le noyau Sparkmagic (PySpark). J'ai utilisé pip pour installer les bibliothèques Python, mais je reçois l’erreur : « ModuleNotFoundError : le module mon_nom_module » introuvable. Comment éliminer cette erreur ?

Brève description

Lorsque vous utilisez le noyau Sparkmagic, le bloc-notes Amazon SageMaker fait office d’interface pour la session Apache Spark qui s'exécute dans un cluster Amazon EMR distant ou un point de terminaison de développement AWS Glue.

Lorsque vous utilisez pip pour installer la bibliothèque Python sur l'instance de bloc-notes, la bibliothèque est disponible uniquement pour l'instance de bloc-notes locale. Pour éliminer l’erreur ModuleNotFoundError, installez la bibliothèque sur le point de terminaison de développement AWS Glue ou sur chaque nœud du cluster EMR.

Remarque : si le code qui utilise la bibliothèque n'a pas besoin de beaucoup de puissance de calcul (par exemple, affichage des résultats), vous pouvez utiliser le mode local (%%local) pour exécuter la cellule sur l'instance de bloc-notes locale uniquement. Dans ce cas, vous n'avez pas besoin d'installer la bibliothèque dans le cluster distant ou le point de terminaison de développement.

Solution

Pour installer des bibliothèques sur un point de terminaison de développement AWS Glue distant, consultez Chargement des bibliothèques Python dans un point de terminaison de développement.

Pour installer des bibliothèques dans un cluster EMR distant, vous pouvez utiliser une action d'amorçage lorsque vous créez le cluster. Si vous avez déjà connecté un cluster EMR à l'instance de bloc-notes Amazon SageMaker, installez manuellement la bibliothèque sur tous les nœuds du cluster :

1.    Connectez-vous au nœud principal en utilisant SSH.

2.    Installez la bibliothèque. Cet exemple montre comment installer pandas :

sudo python -m pip install pandas

3.    Vérifiez que le module est installé avec succès :

python -c "import pandas as pd; print(pd.__version__)"

4.    Ouvrez l'instance de bloc-notes Amazon SageMaker, puis redémarrez le noyau.

5.    Pour vérifier que la bibliothèque fonctionne normalement, exécutez une commande qui nécessite la bibliothèque. Exemple :

pdf = spark.sql("show databases").toPandas()

6.    Connectez-vous aux autres nœuds du cluster en utilisant SSH, puis installez la bibliothèque dans chaque nœud.

Si vous n'avez pas besoin d'exécuter le code dans le cluster distant ou le point de terminaison de développement, utilisez l'instance de bloc-notes locale à la place. Par exemple, au lieu d'installer matplotlib dans chaque nœud du cluster Spark, utilisez le mode local (%%local) pour exécuter la cellule sur l'instance de bloc-notes locale.

L'exemple suivant montre comment exporter les résultats vers une variable locale, puis exécuter le code en mode local :

1.    Exportez le résultat vers une variable locale :

%%sql -o query1
SELECT 1, 2, 3

2.    Exécutez le code localement :

%%local
print(len(query1))

Vous pouvez également exécuter une session Spark locale sur une instance de bloc-notes à l'aide de la bibliothèque Amazon SageMaker Spark. Cela vous permet d'utiliser des estimateurs SageMakerEstimator dans un pipeline Spark. Vous pouvez manipuler les données via Spark à l'aide d'une SparkSession locale. Ensuite, utilisez la bibliothèque Amazon SageMaker Spark pour l’entraînement et l'inférence. Pour plus d'informations, consultez l'exemple de bloc-notes pyspark_mnist_kmeans sur le référentiel GitHub AWS Labs. Cet exemple de bloc-notes utilise le noyau conda_python3 et n'est pas basé sur un cluster EMR. Pour les tâches avec de lourdes charges de travail, créez un cluster Spark distant, puis connectez-le à l'instance de bloc-notes.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?