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.
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:
- Navegue para a lista de aplicações do Spark no separador Monitorizar.
- 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.
- Mude para ver os registos de controlador e stdout.
- Nos resultados, verá os registos relacionados com a instalação dos seus pacotes.
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:
- Navegue para a lista de aplicações do Spark no separador Monitorizar.
- 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.
- 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.
- Nesta página, verá 2 tentativas. Selecione Tentativa 1 conforme mostrado abaixo.
- Na barra de navegação superior na página do servidor Histórico do Spark, alterne para a guia Executores .
- Transfira os ficheiros de registo stdout e stderr para aceder aos resultados de gestão de bibliotecas e aos registos de erros completos.
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:
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.
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
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
- Veja as bibliotecas padrão: Suporte à versão do Apache Spark