Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie behebe ich den Fehler ModuleNotFoundError auf einem SageMaker-Notebook, auf dem der Sparkmagic-Kernel ausgeführt wird?
Ich möchte den Sparkmagic (PySpark)-Kernel verwenden, um eine Amazon SageMaker-Notebook-Instance auszuführen. Ich habe pip verwendet, um die Python-Bibliotheken zu installieren, aber ich habe die folgende Fehlermeldung erhalten: „Modul nicht gefunden“ Fehler: Kein Modul mit dem Namen my_module_name.“
Kurzbeschreibung
Wenn du den Sparkmagic-Kernel verwendest, fungiert das SageMaker-Notebook als Schnittstelle für die Apache Spark-Sitzung. Die Apache Spark-Sitzung wird auf einem Amazon EMR-Remote-Cluster oder einem AWS Glue-Entwicklungsendpunkt ausgeführt. Wenn du pip verwendest, um die Python-Bibliothek auf der Notebook-Instance zu installieren, ist die Bibliothek nur für die lokale Notebook-Instance verfügbar. Um ModuleNotFoundError zu beheben, installiere die Bibliothek auf dem AWS Glue-Entwicklungsendpunkt oder auf jedem Knoten des EMR-Clusters.
Hinweis: Wenn der Code, der die Bibliothek verwendet, nicht rechenintensiv ist, kannst du den lokalen Modus (%%local) verwenden. Im lokalen Modus wird die Zelle nur auf der lokalen Notebook-Instance ausgeführt. Wenn du den lokalen Modus verwendest, musst du die Bibliothek nicht auf dem Remote-Cluster oder dem Entwicklungsendpunkt installieren.
Lösung
Eine Bibliothek auf einem AWS Glue-Entwicklungsendpunkt installieren
Informationen zur Installation von Bibliotheken auf einem Entwicklungsendpunkt von AWS Glue findest du unter Laden von Python-Bibliotheken in einen Entwicklungsendpunkt.
Eine Bibliothek auf einem Amazon EMR-Cluster installieren
Hinweis: Ersetze in den folgenden Befehlen Example-Library durch die Bibliothek, die du verwenden möchtest.
Um Bibliotheken auf einem Amazon EMR-Remote-Cluster zu installieren, verwende beim Erstellen des Clusters eine Bootstrap-Aktion. Wenn du bereits einen EMR-Cluster mit der Amazon SageMaker-Notebook-Instance verbunden hast, installiere die Bibliothek manuell auf allen Clusterknoten.
Führe die folgenden Schritte aus:
-
Verwende SSH, um eine Verbindung zum Primärknoten herzustellen.
-
Bibliothek installieren:
sudo python -m pip install pandas -
Vergewissere dich, dass das Modul erfolgreich installiert wurde:
python -c "import Example-library as pd; print(pd.__version__)" -
Öffne die Amazon SageMaker-Notebook-Instance und starte dann den Kernel neu.
-
Um zu überprüfen, ob die Bibliothek funktioniert, führe einen Befehl aus, der die Bibliothek benötigt z. B. den Folgenden:
pdf = spark.sql("show databases").toExample-library() -
Verwende SSH, um eine Verbindung zu den anderen Clusterknoten herzustellen und installiere dann die Bibliothek auf jedem Knoten.
Lokalen Modus verwenden
Wenn du den Code nicht auf dem Remote-Cluster oder Entwicklungsendpunkt ausführen musst, verwende die lokale Notebook-Instance. Installiere beispielsweise matplotlib nicht auf jedem Knoten des Spark-Clusters. Verwende stattdessen den lokalen Modus (%%local), um die Zelle auf der lokalen Notebook-Instanz auszuführen.
Hinweis: Ersetze in den folgenden Befehlen die Beispielvariablen durch deine Variablen.
Gehe wie folgt vor, um Ergebnisse in eine lokale Variable zu exportieren und den Code im lokalen Modus auszuführen:
-
Exportiere das Ergebnis in eine lokale Variable:
%%sql -o query1SELECT 1, 2, 3 -
Führe den Code lokal aus:
%%localprint(len(query1))
Um SageMakeEstimator in einer Spark-Pipeline zu verwenden, führe eine lokale Spark-Sitzung aus, um die Daten zu ändern. Verwende dann die SageMaker-Spark-Bibliothek, um zu trainieren und Vorhersagen zu treffen. Weitere Informationen findest du unter sagemaker-spark im GitHub-Repository von AWS-Übungen.
Ein Beispiel-Notebook findest du unter pyspark_mnist_kmeans im GitHub-Repository von AWS-Übungen. Das Beispiel-Notebook verwendet den conda_python3-Kernel, dass nicht von einem EMR-Cluster unterstützt wird. Erstelle für Jobs mit hoher Arbeitslast einen Remote-Spark-Cluster und verbinde den Cluster dann mit der Notebook-Instance.
Ähnliche Informationen
Verwende Apache Spark mit Amazon SageMaker
Erstelle Amazon SageMaker-Notebooks, die von Spark unterstützt werden, in Amazon EMR
- Tags
- Amazon SageMaker
- Sprache
- Deutsch
Ähnliche Videos

