Ir para o conteúdo

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

4 minuto de leitura
0

Eu quero usar o kernel Sparkmagic (PySpark) para executar uma instância de caderno do Amazon SageMaker. Eu usei o pip para instalar as bibliotecas Python, mas recebi o seguinte erro: “ModuleNotFoundError: No module named my_module_name.”

Breve descrição

Quando você usa o kernel Sparkmagic, o notebook SageMaker funciona como uma interface para a sessão Apache Spark. A sessão Apache Spark é 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 erro 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, então use o modo local (%%local). O modo local executa a célula apenas na instância local do notebook. Quando você usa o modo local, não é necessário instalar a biblioteca no cluster remoto ou no endpoint de desenvolvimento.

Resolução

Instale uma biblioteca em um endpoint de desenvolvimento do AWS Glue

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

Instale uma biblioteca em um cluster do Amazon EMR

Observação: Nos comandos a seguir, substitua Example-library pela biblioteca que você deseja usar.

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

Conclua as etapas a seguir:

  1. use SSH para se conectar ao nó primário.

  2. Instale a biblioteca:

    sudo python -m pip install pandas
  3. Confirme se o módulo foi instalado com êxito:

    python -c "import Example-library as pd; print(pd.__version__)"
  4. Abra a instância de caderno do Amazon SageMaker e então reinicie o kernel.

  5. Para confirmar que a biblioteca funciona, execute um comando que exija a biblioteca, como o seguinte:

    pdf = spark.sql("show databases").toExample-library()
  6. Use SSH para conectar-se aos outros nós do cluster e, em seguida, instale a biblioteca em cada nó.

Use o modo local

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, não instale o matplotlib em cada nó do cluster Spark. Em vez disso, use o modo local (%%local) para executar a célula na instância local do caderno.

Observação: Nos comandos a seguir, substitua as variáveis de exemplo pelas suas variáveis.

Para exportar os resultados para uma variável local e executar o código no modo local, complete as seguintes etapas:

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

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

    %%localprint(len(query1))

Para usar o SageMakerEstimator em um pipeline Spark, execute uma sessão Spark local para modificar os dados. Em seguida, use a biblioteca SageMaker Spark para treinar e fazer previsões. Para mais informações, consulte sagemaker-spark no repositório do AWS Labs no GitHub.

Para ver um exemplo de caderno, consulte o pyspark\ _mnist\ _kmeans no repositório do AWS Labs no GitHub. O caderno de exemplo usa o kernel conda_python3, que não é suportado por um cluster EMR. Para trabalhos com workloads pesados, crie um cluster Spark remoto e conecte o cluster à instância do caderno.

Informações relacionadas

Use o Apache Spark com o Amazon SageMaker

Crie cadernos do Amazon SageMaker apoiados pelo Spark no Amazon EMR

AWS OFICIALAtualizada há um ano