Direkt zum Inhalt

Wie behebe ich den Fehler ModuleNotFoundError auf einem SageMaker-Notebook, auf dem der Sparkmagic-Kernel ausgeführt wird?

Lesedauer: 3 Minute
0

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:

  1. Verwende SSH, um eine Verbindung zum Primärknoten herzustellen.

  2. Bibliothek installieren:

    sudo python -m pip install pandas
  3. Vergewissere dich, dass das Modul erfolgreich installiert wurde:

    python -c "import Example-library as pd; print(pd.__version__)"
  4. Öffne die Amazon SageMaker-Notebook-Instance und starte dann den Kernel neu.

  5. 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()
  6. 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:

  1. Exportiere das Ergebnis in eine lokale Variable:

    %%sql -o query1SELECT 1, 2, 3
  2. 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