Como posso resolver o ModuleNotFoundError em um caderno do Amazon SageMaker que está executando o kernel Sparkmagic?

3 minuto de leitura
0

Estou tentando executar uma instância de caderno do Amazon SageMaker com o kernel Sparkmagic (PySpark). Eu usei o pip para instalar as bibliotecas do Python, mas recebo o seguinte erro: “ModuleNotFoundError: Nenhum módulo chamado my_module_name.”

Breve descrição

Quando você usa o kernel Sparkmagic, o caderno do Amazon SageMaker atua como uma interface para a sessão do Apache Spark que está sendo executada em um cluster remoto do Amazon EMR ou em um endpoint de desenvolvimento do AWS Glue.

Quando você usa pip para instalar a biblioteca Python na instância do caderno, a biblioteca fica disponível somente para a instância local do caderno. Para resolver o ModuleNotFoundError, instale a biblioteca no endpoint de desenvolvimento do AWS Glue ou em cada nó do cluster EMR.

Observação: se o código que usa a biblioteca não for intensivo em computação, você poderá usar o modo local (%%local). O modo local executa a célula somente na instância do caderno local. Ao usar o modo local, você não precisa instalar a biblioteca no cluster remoto ou no endpoint de desenvolvimento.

Resolução

Para instalar bibliotecas em um endpoint de desenvolvimento remoto do AWS Glue, consulte Carregar bibliotecas do Python em um endpoint de desenvolvimento.

Para instalar bibliotecas em um cluster do EMR remoto, você pode usar uma ação de bootstrap ao criar o cluster. Se você já conectou um cluster do EMR à instância do caderno do Amazon SageMaker, instale manualmente a biblioteca em todos os nós do cluster:

1.    Conecte-se ao nó principal usando SSH.

2.    Instale a biblioteca. Este exemplo mostra como instalar pandas:

sudo python -m pip install pandas

3.    Confirme se o módulo foi instalado com êxito:

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

4.    Abra a instância de caderno do Amazon SageMaker e reinicie o kernel.

5.    Para confirmar se a biblioteca funciona conforme o esperado, execute um comando que demande a biblioteca. Exemplo:

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

6.    Conecte-se aos outros nós do cluster usando SSH e, em seguida, instale a biblioteca em cada nó.

Se você não precisar executar o código no cluster remoto ou no endpoint de desenvolvimento, use a instância local do caderno. Por exemplo, em vez de instalar matplotlib em cada nó do cluster do Spark, use o modo local (%%local) para executar a célula na instância do caderno local.

O exemplo a seguir mostra como exportar resultados para uma variável local e depois executar o código no modo local:

1.    Exporte o resultado para uma variável local:

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

2.    Execute o código localmente:

%%local
print(len(query1))

Você também pode executar uma sessão local do Spark em uma instância de caderno usando a biblioteca do Amazon SageMaker Spark. Isso permite que você use estimadores do SageMakerEstimator em um pipeline do Spark. Você pode manipular dados por meio do Spark usando uma SparkSession local. Em seguida, use a biblioteca do Amazon SageMaker Spark para treinamento e inferência. Para obter mais informações, consulte o caderno de exemplo pyspark_mnist_kmeans no repositório do AWS Labs GitHub. Esse caderno de exemplo usa o kernel conda_python3 e não tem suporte de um cluster do EMR. Para trabalhos com workloads pesadas, crie um cluster remoto do Spark e, em seguida, conecte-o à instância de caderno.


Informações relacionadas

Use o Apache Spark com o Amazon SageMaker

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos