Wie kann ich den ModuleNotFoundError auf einem Amazon SageMaker-Notebook beheben, auf dem der Sparkmagic-Kernel ausgeführt wird?

Lesedauer: 3 Minute
0

Ich versuche, eine Amazon SageMaker-Notebook-Instance mit dem Sparkmagic (PySpark) -Kernel auszuführen. Ich habe pip verwendet, um die Python-Bibliotheken zu installieren, aber ich erhalte die folgende Fehlermeldung: „Modul nicht gefunden“ Fehler: Kein Modul mit dem Namen my_module_name.“

Kurzbeschreibung

Wenn Sie den Sparkmagic-Kernel verwenden, fungiert das Amazon SageMaker-Notebook als Schnittstelle für die Apache Spark-Sitzung, die auf einem Remote-Cluster von Amazon EMR oder einem AWS Glue-Entwicklungsendpunkt ausgeführt wird.

Wenn Sie pip verwenden, um die Python-Bibliothek auf der Notebook-Instance zu installieren, ist die Bibliothek nur für die lokale Notebook-Instance verfügbar. Um den ModuleNotFoundError zu beheben, installieren Sie 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, können Sie den lokalen Modus (%%local) verwenden. Im lokalen Modus wird die Zelle nur auf der lokalen Notebook-Instance ausgeführt. Wenn Sie den lokalen Modus verwenden, müssen Sie die Bibliothek nicht auf dem Remote-Cluster oder dem Entwicklungsendpunkt installieren.

Lösung

Informationen zur Installation von Bibliotheken auf einem Remote-Entwicklungsendpunkt von AWS Glue finden Sie unter Laden von Python-Bibliotheken in einen Entwicklungsendpunkt.

Um Bibliotheken auf einem Remote-EMR-Cluster zu installieren, können Sie ](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-bootstrap.html)beim Erstellen des Clusters eine Bootstrap-Aktion[ verwenden. Wenn Sie bereits einen EMR-Cluster mit der Amazon SageMaker-Notebook-Instance verbunden haben, installieren Sie die Bibliothek manuell auf allen Clusterknoten:

1.    Stellen Sie über SSH eine Verbindung zum Master-Knoten her.

2.    Installieren Sie die Bibliothek. Dieses Beispiel zeigt, wie Pandas installiert wird:

sudo python -m pip install pandas

3.    Vergewissern Sie sich, dass das Modul erfolgreich installiert wurde:

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

4.    Öffnen Sie die Amazon SageMaker-Notebook-Instance und starten Sie dann den Kernel neu.

5.    Führen Sie einen Befehl aus, der die Bibliothek benötigt, um zu überprüfen, ob die Bibliothek wie erwartet funktioniert. Beispiel:

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

6.    Stellen Sie mithilfe von SSH eine Verbindung zu den anderen Clusterknoten her und installieren Sie dann die Bibliothek auf jedem Knoten.

Wenn Sie den Code nicht auf dem Remote-Cluster oder Entwicklungsendpunkt ausführen müssen, verwenden Sie stattdessen die lokale Notebook-Instance. Anstatt beispielsweise matplotlib auf jedem Knoten des Spark-Clusters zu installieren, verwenden Sie den lokalen Modus (%%local), um die Zelle auf der lokalen Notebook-Instance auszuführen.

Das folgende Beispiel zeigt, wie Ergebnisse in eine lokale Variable exportiert und dann Code im lokalen Modus ausgeführt werden:

1.    Exportieren Sie das Ergebnis in eine lokale Variable:

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

2.    Führen Sie den Code lokal aus:

%%local
print(len(query1))

Sie können mithilfe der Amazon SageMaker Spark-Bibliothek auch eine lokale Spark-Sitzung auf einer Notebook-Instance ausführen. Auf diese Weise können Sie **SageMakerEstimator-**Estimatoren in einer Spark-Pipeline verwenden. Sie können Daten über Spark mithilfe einer lokalen SparkSession manipulieren. Verwenden Sie dann die Amazon SageMaker Spark-Bibliothek für Schulungen und Inferenzen. Weitere Informationen finden Sie im Beispielnotizbuch pyspark_mnist_kmeans im GitHub-Repository von AWS Labs. Dieses Beispiel-Notebook verwendet den conda_python3-Kernel und wird nicht von einem EMR-Cluster unterstützt. Erstellen Sie für Jobs mit hoher Arbeitslast einen Remote-Spark-Cluster und verbinden Sie ihn dann mit der Notebook-Instance.


Ähnliche Informationen

Verwenden Sie Apache Spark mit Amazon SageMaker

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr