Come posso risolvere l’errore ModuleNotFoundError su un notebook Amazon SageMaker che esegue il kernel Sparkmagic?

3 minuti di lettura
0

Sto cercando di eseguire un'istanza per notebook Amazon SageMaker con il kernel Sparkmagic (PySpark). Ho usato pip per installare le librerie Python, ma ricevo il seguente errore: "ModuleNotFoundError: No module named my_module_name."

Breve descrizione

Quando si utilizza il kernel Sparkmagic, il notebook Amazon SageMaker funge da interfaccia per la sessione di Apache Spark in esecuzione su un cluster Amazon EMR remoto o un endpoint di sviluppo AWS Glue.

Quando si utilizza pip per installare la libreria Python sull'istanza del notebook, la libreria è disponibile solo per l'istanza del notebook locale. Per risolvere l’erroreModuleNotFoundError, installa la libreria sull'endpoint di sviluppo AWS Glue o su ogni nodo del cluster EMR.

Nota:se il codice che utilizza la libreria non richiede un'elaborazione intensiva, puoi utilizzare la modalità locale (%%local). La modalità locale esegue la cella solo sull'istanza locale del notebook. Quando si utilizza la modalità locale, non è necessario installare la libreria sul cluster remoto o sull'endpoint di sviluppo.

Risoluzione

Per installare le librerie su un endpoint di sviluppo AWS Glue remoto, consulta Loading Python libraries in a development endpoint.

Per installare le librerie su un cluster EMR remoto, puoi utilizzare un'azione bootstrap quando crei il cluster. Se hai già collegato un cluster EMR all'istanza del notebook Amazon SageMaker, installa manualmente la libreria su tutti i nodi del cluster:

1.    Connettiti al nodo master tramite SSH.

2.    Installa la libreria. Questo esempio mostra come installare pandas:

sudo python -m pip install pandas

3.    Conferma che il modulo è stato installato correttamente:

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

4.    Apri l'istanza del notebook Amazon SageMaker, quindi riavvia il kernel.

5.    Per confermare che la libreria funzioni come previsto, esegui un comando che richiede la libreria. Esempio:

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

6.    Connettiti agli altri nodi del cluster tramite SSH, quindi installa la libreria su ogni nodo.

Se non è necessario eseguire il codice sul cluster remoto o sull'endpoint di sviluppo, utilizza invece l'istanza notebook locale. Ad esempio, invece di installare matplotlib su ogni nodo del cluster Spark, usa la modalità locale (%%local) per eseguire la cella sull'istanza locale del notebook.

L'esempio seguente mostra come esportare i risultati in una variabile locale e quindi eseguire il codice in modalità locale:

1.    Esporta il risultato in una variabile locale:

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

2.    Esegui il codice localmente:

%%local
print(len(query1))

Puoi anche eseguire una sessione Spark locale su un'istanza di notebook utilizzando la libreria Amazon SageMaker Spark. Ciò consente di utilizzare gli stimatori SageMakerEstimator in una pipeline Spark. Puoi manipolare i dati tramite Spark utilizzando una SparkSession locale. Quindi, utilizza la libreria Amazon SageMaker Spark per la formazione e l'inferenza. Per ulteriori informazioni, consulta il notebook di esempio pyspark_mnist_kmeans nel repository GitHub di AWS Labs. Questo notebook di esempio utilizza il kernel conda_python3 e non è supportato da un cluster EMR. Per lavori con carichi di lavoro elevati, crea un cluster Spark remoto e connettilo all'istanza del notebook.


Informazioni correlate

Use Apache Spark with Amazon SageMaker

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa