Partilhar via


Resolver problemas de erros de instalação da biblioteca

Para disponibilizar código de terceiros ou criado localmente às suas aplicações, pode instalar uma biblioteca num dos seus conjuntos do Apache Spark sem servidor. Os pacotes listados no ficheiro requirements.txt são transferidos do PyPI no momento do arranque do conjunto. Este ficheiro de requisitos é utilizado sempre que uma instância do Spark é criada a partir desse conjunto do Spark. Após uma biblioteca ser instalada para um conjunto do Spark, fica disponível para todas as sessões com o mesmo conjunto.

Em alguns casos, poderá constatar que uma biblioteca não aparece no seu conjunto do Apache Spark. Isto ocorre frequentemente quando existe um erro no ficheiro requirements.txt fornecido ou nas bibliotecas especificadas. Quando ocorre um erro no processo de instalação de bibliotecas, o conjunto do Apache Spark reverterá novamente para as bibliotecas especificadas no runtime base do Synapse.

O objetivo deste documento é fornecer problemas comuns e ajudar a depurar erros de instalação de bibliotecas.

Forçar a atualização do seu conjunto do Apache Spark

Quando atualizar as bibliotecas no seu conjunto do Apache Spark, estas alterações serão refletidas assim que o conjunto for reiniciado. Se tiver tarefas ativas, estas continuarão a ser executadas na versão original do conjunto do Spark.

Pode forçar a aplicação das alterações ao selecionar a opção Forçar novas definições. Esta definição terminará todas as sessões atuais do conjunto do Spark selecionado. Após as sessões serem terminadas, terá de aguardar que o conjunto seja reiniciado.

Adicionar bibliotecas do Python

Controlar o progresso da instalação

É iniciada uma tarefa do Spark reservada pelo sistema sempre que um conjunto é atualizado como um novo conjunto de bibliotecas. Esta tarefa do Spark ajuda a monitorizar o estado de instalação da biblioteca. Se a instalação falhar devido a conflitos de bibliotecas ou outros problemas, o conjunto do Spark reverterá para o estado anterior ou predefinido.

Além disso, os utilizadores também podem inspecionar os registos de instalação para identificar conflitos de dependência ou ver que bibliotecas foram instaladas durante a atualização do conjunto.

Para ver estes registos:

  1. Navegue para a lista de aplicações do Spark no separador Monitorizar.
  2. Selecione a tarefa de aplicação do Spark do sistema que corresponde à sua atualização do conjunto. Estas tarefas do sistema são executadas com o título SystemReservedJob-LibraryManagement. Captura de ecrã que realça a tarefa da biblioteca reservada pelo sistema.
  3. Mude para ver os registos de controlador e stdout.
  4. Nos resultados, verá os registos relacionados com a instalação dos seus pacotes. Captura de ecrã que realça os resultados da tarefa da biblioteca reservada pelo sistema.

Falhas no controlo da instalação

Em determinados casos, os utilizadores também podem inspecionar os registos de instalação completos disponíveis no Servidor de Histórico do Apache Spark, para identificar conflitos de dependência complexos. Os registos disponíveis através da IU do Spark podiam ser truncados e o acesso aos registos de instalação completos através do Servidor de Histórico do Spark seria útil em cenários complexos de instalação de bibliotecas.

Para ver os registos de instalação completos:

  1. Navegue para a lista de aplicações do Spark no separador Monitorizar.
  2. Selecione a tarefa de aplicação do Spark do sistema que corresponde à atualização do conjunto com falhas. Estas tarefas do sistema são executadas com o título SystemReservedJob-LibraryManagement. Captura de ecrã que realça a tarefa da biblioteca reservada pelo sistema com falhas.
  3. Selecione a opção de servidor de histórico do Spark realçada que abriria a página de detalhes do servidor de histórico do Spark em uma nova guia.Captura de ecrã que realça os detalhes da tarefa da biblioteca reservada pelo sistema com falhas.
  4. Nesta página, verá 2 tentativas. Selecione Tentativa 1 conforme mostrado abaixo. Captura de ecrã que realça os detalhes do executor na página do servidor de histórico do Spark para a tarefa da biblioteca reservada pelo sistema com falhas.
  5. Na barra de navegação superior na página do servidor Histórico do Spark, alterne para a guia Executores . Captura de ecrã que realça os detalhes da tarefa na página do servidor de histórico do Spark para a tarefa da biblioteca reservada pelo sistema com falhas.
  6. Transfira os ficheiros de registo stdout e stderr para aceder aos resultados de gestão de bibliotecas e aos registos de erros completos. Captura de ecrã que realça a página do servidor de histórico do Spark para a tarefa da biblioteca reservada pelo sistema com falhas.

Valide suas permissões

Para instalar e atualizar bibliotecas, você deve ter as permissões de Colaborador de Dados de Blob de Armazenamento ou Proprietário de Dados de Blob de Armazenamento na conta principal do Armazenamento do Azure Data Lake Gen2 vinculada ao espaço de trabalho do Azure Synapse Analytics.

Para validar que você tem essas permissões, você pode executar o seguinte código:

from pyspark.sql.types import StructType,StructField, StringType, IntegerType
data2 = [("James","Smith","Joe","4355","M",3000),
    ("Michael","Rose","Edward","40288","F",4000)
  ]

schema = StructType([ \
    StructField("firstname",StringType(),True), \
    StructField("middlename",StringType(),True), \
    StructField("lastname",StringType(),True), \
    StructField("id", StringType(), True), \
    StructField("gender", StringType(), True), \
    StructField("salary", IntegerType(), True) \
  ])
 
df = spark.createDataFrame(data=data2,schema=schema)

df.write.csv("abfss://<<ENTER NAME OF FILE SYSTEM>>@<<ENTER NAME OF PRIMARY STORAGE ACCOUNT>>.dfs.core.windows.net/validate_permissions.csv")

Se você receber um erro, provavelmente não terá as permissões necessárias. Para saber como obter as permissões necessárias, visite este documento: Atribuir permissões de Colaborador de Dados de Blob de Armazenamento ou Proprietário de Dados de Blob de Armazenamento.

Além disso, se você estiver executando um Pipeline, o MSI do Espaço de Trabalho também deverá ter permissões de Proprietário de Dados de Blob de Armazenamento ou de Colaborador de Dados de Blob de Armazenamento. Para saber como conceder essa permissão à identidade do seu espaço de trabalho, visite: Conceder permissões à identidade gerenciada do espaço de trabalho.

Verifique o arquivo de configuração do ambiente

Um arquivo de configuração de ambiente pode ser usado para atualizar o ambiente Conda. Esses formatos de arquivo aceitáveis para o gerenciamento de pool Python estão listados como Especificações de ambiente.

É importante observar as seguintes restrições:

  • O conteúdo do arquivo de requisitos não deve incluir linhas ou caracteres em branco extras.
  • O Synapse Runtime inclui um conjunto de bibliotecas que são pré-instaladas em cada pool Apache Spark sem servidor. Os pacotes que vêm pré-instalados no tempo de execução base não podem ser removidos ou desinstalados.
  • Não há suporte para alterar a versão PySpark, Python, Scala/Java, .NET ou Spark.
  • As bibliotecas com escopo de sessão Python só aceitam arquivos com uma extensão YML.

Validar arquivos de roda

Os pools do Apache Spark sem servidor Synapse são baseados na distribuição Linux. Ao baixar e instalar arquivos Wheel diretamente do PyPI, certifique-se de selecionar a versão que é construída no Linux e roda na mesma versão Python do pool do Spark.

Importante

Pacotes personalizados podem ser adicionados ou modificados entre sessões. No entanto, você precisará aguardar a reinicialização do pool e da sessão para ver o pacote atualizado.

Verificar conflitos de dependência

Em geral, a resolução de dependência do Python pode ser difícil de gerenciar. Para ajudar a depurar conflitos de dependência localmente, você pode criar seu próprio ambiente virtual com base no Synapse Runtime e validar suas alterações.

Para recriar o ambiente e validar suas atualizações:

  1. Baixe o modelo para recriar localmente o tempo de execução do Synapse. Pode haver pequenas diferenças entre o modelo e o ambiente Synapse real.

  2. Crie um ambiente virtual usando as instruções a seguir. Este ambiente permite que você crie uma instalação Python isolada com a lista especificada de bibliotecas.

    conda myenv create -f environment.yml
    conda activate myenv
    
  3. Use pip install -r <provide your req.txt file> para atualizar o ambiente virtual com seus pacotes especificados. Se a instalação resultar em um erro, pode haver um conflito entre o que está pré-instalado no tempo de execução da base Synapse e o que é especificado no arquivo de requisitos fornecido. Esses conflitos de dependência devem ser resolvidos para obter as bibliotecas atualizadas no pool do Apache Spark sem servidor.

Importante

Podem surgir problemas ao usar pip e conda juntos. Ao combinar pip e conda, é melhor seguir estas práticas recomendadas.

Próximos passos