¿Cómo puedo solucionar el error ModuleNotFoundError en un cuaderno de Amazon SageMaker que ejecuta el núcleo de Sparkmagic?

4 minutos de lectura
0

Estoy intentando ejecutar una instancia de cuaderno de Amazon SageMaker con el núcleo de Sparkmagic (PySpark). He utilizado pip para instalar las bibliotecas de Python, pero aparece el siguiente error: «ModuleNotFoundError: No module named my_module_name».

Descripción breve

Cuando utiliza el núcleo kernel de Sparkmagic, el cuaderno de Amazon SageMaker actúa como interfaz para la sesión de Apache Spark que se ejecuta en un clúster remoto de Amazon EMR o en un punto de conexión de desarrollo de AWS Glue.

Al utilizar pip para instalar la biblioteca de Python en la instancia del cuaderno, la biblioteca solo está disponible para la instancia del cuaderno local. Para solucionar el error ModuleNotFoundError, instale la biblioteca en el punto de conexión de desarrollo de AWS Glue o en cada nodo del clúster de EMR.

Nota:Si el código que utiliza la biblioteca no requiere muchos cálculos, puede utilizar el modo local (%%local). El modo local ejecuta la celda solo en la instancia del cuaderno local. Al utilizar el modo local, no es necesario instalar la biblioteca en el clúster remoto ni en el punto de conexión de desarrollo.

Resolución

Para instalar bibliotecas en un punto de conexión de desarrollo de AWS Glue remoto, consulte Cargar bibliotecas de Python en un punto de conexión de desarrollo.

Para instalar bibliotecas en un clúster de EMR remoto, puede utilizar una acción de arranque al crear el clúster. Si ya ha conectado un clúster de EMR a la instancia de cuaderno de Amazon SageMaker, instale manualmente la biblioteca en todos los nodos del clúster:

  1. Conéctese al nodo maestro mediante SSH.

  2. Instale la biblioteca. Este ejemplo muestra cómo instalar pandas:

sudo python -m pip install pandas
  1. Confirme que el módulo se ha instalado correctamente:
python -c "import pandas as pd; print(pd.__version__)"
  1. Abra la instancia del cuaderno de Amazon SageMaker y, a continuación, reinicie el núcleo.

  2. Para confirmar que la biblioteca funciona según lo previsto, ejecute un comando que requiera la biblioteca. Ejemplo:

pdf = spark.sql("show databases").toPandas()
  1. Conéctese a los demás nodos del clúster mediante SSH y, a continuación, instale la biblioteca en cada nodo.

Si no necesita ejecutar el código en el clúster remoto o en el punto de conexión de desarrollo, utilice la instancia de cuaderno local en su lugar. Por ejemplo, en lugar de instalar matplotlib en cada nodo del clúster de Spark, utilice el modo local (%%local) para ejecutar la celda en la instancia del cuaderno local.

El siguiente ejemplo muestra cómo exportar los resultados a una variable local y, a continuación, ejecutar el código en modo local:

  1. Exporte el resultado a una variable local:
%%sql -o query1
SELECT 1, 2, 3
  1. Ejecute el código localmente:
%%local
print(len(query1))

También puede ejecutar una sesión local de Spark en una instancia de cuaderno mediante la biblioteca Amazon SageMaker Spark. Esto permite utilizar los estimadores de SageMakerEstimator en una canalización de Spark. Puede manipular datos a través de Spark utilizando una SparkSession local. A continuación, utilice la biblioteca de Amazon SageMaker Spark para el entrenamiento y la inferencia. Para obtener más información, consulte el cuaderno de ejemplo pyspark_mnist_kmeans en el repositorio de GitHub de AWS Labs. Este cuaderno de ejemplo utiliza el núcleo conda_python3 y no está respaldado por un clúster de EMR. Para trabajos con cargas de trabajo pesadas, cree un clúster de Spark remoto y, a continuación, conéctelo a la instancia del cuaderno.


Información relacionada

Utilice Apache Spark con Amazon SageMaker

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año