Saltar al contenido

¿Cómo puedo solucionar el error «ModuleNotFoundError» en un cuaderno de SageMaker que ejecuta el kernel de Sparkmagic?

4 minutos de lectura
0

Quiero usar el kernel de Sparkmagic (PySpark) para ejecutar una instancia de cuaderno de Amazon SageMaker. He utilizado pip para instalar las bibliotecas de Python, pero aparece el siguiente error: «ModuleNotFoundError: No module named my_module_name».

Descripción corta

Cuando utilizas el kernel de Sparkmagic, el cuaderno de SageMaker actúa como interfaz para la sesión de Apache Spark. La sesión de Apache Spark se ejecuta en un clúster remoto de Amazon EMR o en un punto de enlace 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, instala la biblioteca en el punto de enlace 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, utiliza 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 enlace de desarrollo.

Resolución

Instalación de una biblioteca en un punto de enlace de desarrollo de AWS Glue

Para instalar bibliotecas en un punto de enlace de desarrollo de AWS Glue, consulta Cargar bibliotecas de Python en un punto de enlace de desarrollo.

Instalación de una biblioteca en un clúster de Amazon EMR

Nota: En los siguientes comandos, sustituye Example-library por la biblioteca que desees usar.

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

Sigue estos pasos:

  1. Usa SSH para conectarte al nodo principal.

  2. Instala la biblioteca:

    sudo python -m pip install pandas
  3. Confirma que el módulo se ha instalado correctamente:

    python -c "import Example-library as pd; print(pd.__version__)"
  4. Abre la instancia de cuaderno de Amazon SageMaker y, a continuación, reinicia el kernel.

  5. Para confirmar que la biblioteca funciona, ejecuta un comando que la requiera, como el siguiente:

    pdf = spark.sql("show databases").toExample-library()
  6. Usa SSH para conectarte a los demás nodos del clúster y, a continuación, instala la biblioteca en cada nodo.

Uso del modo local

Si no necesitas ejecutar el código en el clúster remoto o en el punto de enlace de desarrollo, utiliza la instancia de cuaderno local en su lugar. Por ejemplo, no instales matplotlib en cada nodo del clúster de Spark. En su lugar, usa el modo local (%local) para ejecutar la celda en la instancia del cuaderno local.

Nota: En los siguientes comandos, sustituye las variables de ejemplo por las tuyas.

Para exportar los resultados a una variable local y ejecutar el código en modo local, sigue estos pasos:

  1. Exporta el resultado a una variable local:

    %%sql -o query1SELECT 1, 2, 3
  2. Ejecuta el código localmente:

    %%localprint(len(query1))

Para usar SageMakerEstimator en una canalización de Spark, ejecuta una sesión local de Spark para modificar los datos. A continuación, utiliza la biblioteca de SageMaker Spark para entrenar y hacer predicciones. Para obtener más información, consulta sagemaker-spark en el repositorio de GitHub de AWS Labs.

Para ver un cuaderno de ejemplo, consulta pyspark_mnist_kmeans en el repositorio de GitHub de AWS Labs. Este cuaderno de ejemplo utiliza el kernel conda_python3 y no está respaldado por un clúster de EMR. Para trabajos con cargas de trabajo pesadas, crea un clúster de Spark remoto y, a continuación, conéctalo a la instancia del cuaderno.

Información relacionada

Uso de Apache Spark con Amazon SageMaker

Creación de cuadernos de Amazon SageMaker respaldadas por Spark en Amazon EMR