Salta al contenuto

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

3 minuti di lettura
0

Desidero utilizzare il kernel Sparkmagic (PySpark) per eseguire un'istanza del notebook Amazon SageMaker. Ho utilizzato pip per installare le librerie Python, ma ricevo il seguente errore: "ModuleNotFoundError: No module named my_module_name."

Breve descrizione

Quando utilizzi il kernel Sparkmagic, il notebook SageMaker funge da interfaccia per la sessione Apache Spark. La sessione Apache Spark viene eseguita su un cluster Amazon EMR remoto o su un endpoint di sviluppo AWS Glue. Quando utilizzi pip per installare la libreria Python sull'istanza del notebook, la libreria è disponibile solo per l'istanza del notebook locale. Per risolvere l’errore ModuleNotFoundError, 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, utilizza la modalità locale (%%local). La modalità locale esegue la cella solo sull'istanza del notebook locale. Quando utilizzi la modalità locale, non serve installare la libreria sul cluster remoto o sull'endpoint di sviluppo.

Risoluzione

Installa una libreria su un endpoint di sviluppo AWS Glue

Per installare librerie su un endpoint di sviluppo AWS Glue, consulta Caricamento di librerie Python in un endpoint di sviluppo.

Installa una libreria su un cluster Amazon EMR

Nota: nei comandi seguenti, sostituisci Example-library con la libreria che desideri utilizzare.

Per installare librerie su un cluster Amazon EMR remoto, utilizza un'azione di bootstrap durante la creazione del cluster. Se hai già connesso un cluster EMR all'istanza del notebook Amazon SageMaker, installa manualmente la libreria su tutti i nodi del cluster.

Completa i seguenti passaggi:

  1. Utilizza SSH per connetterti al nodo principale.

  2. Installa la libreria:

    sudo python -m pip install pandas
  3. Verifica che il modulo sia stato installato correttamente:

    python -c "import Example-library as pd; print(pd.__version__)"
  4. Apri l'istanza del notebook Amazon SageMaker, quindi riavvia il kernel.

  5. Per verificare che la libreria funzioni, esegui un comando che richiede la libreria, come il seguente:

    pdf = spark.sql("show databases").toExample-library()
  6. Utilizza SSH per connetterti agli altri nodi del cluster, quindi installa la libreria su ogni nodo.

Utilizza la modalità locale

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

Nota: nei comandi seguenti, sostituisci gli esempi di variabili con le tue variabili.

Per esportare i risultati in una variabile locale ed eseguire il codice in modalità locale, completa i seguenti passaggi:

  1. Esporta il risultato in una variabile locale:

    %%sql -o query1SELECT 1, 2, 3
  2. Esegui localmente il codice:

    %%localprint(len(query1))

Per utilizzare SageMakerEstimator in una pipeline Spark, esegui una sessione Spark locale per modificare i dati. Quindi utilizza la libreria SageMaker Spark per addestrare e formulare previsioni. Per ulteriori informazioni, consulta sagemaker-spark nel repository AWS Labs del sito web di GitHub.

Per visualizzare un esempio di notebook, consulta pyspark_mnist_kmeans nel repository AWS Labs del sito web di GitHub. Questo esempio di notebook utilizza il kernel conda_python3, che non è supportato da un cluster EMR. Per processi con carichi di lavoro pesanti, crea un cluster Spark remoto e connetti il cluster all'istanza del notebook.

Informazioni correlate

Utilizzo di Apache Spark con Amazon SageMaker

Build Amazon SageMaker notebooks backed by Spark in Amazon EMR (Creazione di notebook Amazon SageMaker supportati da Spark in Amazon EMR)