Resolver problemas de erros de instalação da biblioteca
Para disponibilizar códigos de terceiros ou criados 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. Uma vez instalada uma biblioteca para um conjunto do Spark, está disponível para todas as sessões com o mesmo conjunto.
Em alguns casos, poderá descobrir que uma biblioteca não aparece no seu conjunto do Apache Spark. Este caso ocorre frequentemente quando existe um erro nas bibliotecas fornecidas requirements.txt ou especificadas. Quando ocorre um erro no processo de instalação da biblioteca, o conjunto do Apache Spark reverterá novamente para as bibliotecas especificadas no runtime base do Synapse.
O objetivo deste documento é fornecer problemas comuns e ajudá-lo a depurar erros de instalação da biblioteca.
Forçar a atualização do conjunto do Apache Spark
Quando atualizar as bibliotecas no conjunto do Apache Spark, estas alterações serão recolhidas assim que o conjunto for reiniciado. Se tiver tarefas ativas, estas tarefas continuarão a ser executadas na versão original do conjunto spark.
Pode forçar a aplicação das alterações ao selecionar a opção para Forçar novas definições. Esta definição terminará todas as sessões atuais do conjunto do Spark selecionado. Assim que as sessões terminarem, terá de aguardar que o conjunto seja reiniciado.
Controlar o progresso da instalação
É iniciada uma tarefa do Spark reservada do sistema sempre que um conjunto é atualizado com um novo conjunto de bibliotecas. Esta tarefa do Spark ajuda a monitorizar o estado da 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 Monitor .
- Selecione a tarefa da aplicação Spark do sistema que corresponde à atualização do conjunto. Estas tarefas de sistema são executadas no 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.
Controlar falhas de instalação
Em determinados casos, os utilizadores também podem inspecionar os registos de instalação completos disponíveis no Servidor do Histórico do Spark para identificar conflitos de dependência complicados. Os registos disponíveis através da IU do Spark podem ser truncados e aceder aos registos de instalação completos através do Spark History Server 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 Monitor .
- Selecione a tarefa da aplicação Spark do sistema que corresponde à atualização do conjunto com falhas. Estas tarefas de sistema são executadas no título SystemReservedJob-LibraryManagement .
- Selecione a opção de servidor do histórico do Spark realçada que abriria a página de detalhes do servidor do histórico do Spark num novo separador. Captura de
- Nesta página, verá 2 tentativas, selecione Tentativa 1 , conforme mostrado abaixo.
- Na barra de navegação superior na página do servidor do histórico do Spark, mude para o separador Executors.
- Transfira os ficheiros de registo stdout e stderr para aceder à saída completa da gestão da biblioteca e aos registos de erros.
Validar as suas permissões
Para instalar e atualizar bibliotecas, tem de ter as permissões Contribuidor de Dados de Blobs de Armazenamento ou Proprietário de Dados de Blobs de Armazenamento na conta de Armazenamento do Azure Data Lake Storage Gen2 principal que está ligada à área de trabalho do Azure Synapse Analytics.
Para validar que tem estas permissões, 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 receber um erro, é provável que não tenha as permissões necessárias. Para saber como obter as permissões necessárias, visite este documento: Atribuir permissões de Contribuidor de Dados de Blobs de Armazenamento ou Proprietário de Dados de Blobs de Armazenamento.
Além disso, se estiver a executar um Pipeline, a MSI da Área de Trabalho também tem de ter permissões de Proprietário de Dados de Blobs de Armazenamento ou Contribuidor de Dados de Blobs de Armazenamento. Para saber como conceder esta permissão à identidade da área de trabalho, visite: Conceder permissões à identidade gerida da área de trabalho.
Verificar o ficheiro de configuração do ambiente
Um ficheiro de configuração de ambiente pode ser utilizado para atualizar o ambiente conda. Estes formatos de ficheiro aceitáveis para a gestão de conjuntos python estão listados como Especificações de Ambiente.
É importante ter em atenção as seguintes restrições:
- O conteúdo do ficheiro de requisitos não pode incluir linhas ou carateres em branco adicionais.
- O Synapse Runtime inclui um conjunto de bibliotecas pré-instaladas em todos os conjuntos do Apache Spark sem servidor. Os pacotes pré-instalados no runtime base não podem ser removidos ou desinstalados.
- A alteração da versão PySpark, Python, Scala/Java, .NET ou Spark não é suportada.
- As bibliotecas com âmbito de sessão python só aceitam ficheiros com uma extensão YML.
Validar ficheiros de roda
Os conjuntos do Apache Spark sem servidor do Synapse baseiam-se na distribuição do Linux. Ao transferir e instalar ficheiros Wheel diretamente a partir do PyPI, certifique-se de que seleciona a versão incorporada no Linux e é executada na mesma versão do Python que o conjunto do Spark.
Importante
Os pacotes personalizados podem ser adicionados ou modificados entre sessões. No entanto, terá de aguardar que o conjunto e a sessão reiniciem para ver o pacote atualizado.
Verificar a existência de conflitos de dependência
Em geral, a resolução de dependências do Python pode ser difícil de gerir. Para ajudar a depurar conflitos de dependência localmente, pode criar o seu próprio ambiente virtual com base no Synapse Runtime e validar as suas alterações.
Para recriar o ambiente e validar as atualizações:
Transfira o modelo para recriar localmente o runtime do Synapse. Pode haver ligeiras diferenças entre o modelo e o ambiente real do Synapse.
Crie um ambiente virtual com as seguintes instruções. Este ambiente permite-lhe criar uma instalação de Python isolada com a lista especificada de bibliotecas.
conda myenv create -f environment.yml conda activate myenv
Utilize
pip install -r <provide your req.txt file>
para atualizar o ambiente virtual com os pacotes especificados. Se a instalação resultar num erro, poderá existir um conflito entre o que está pré-instalado no runtime base do Synapse e o que é especificado no ficheiro de requisitos fornecido. Estes conflitos de dependência têm de ser resolvidos para obter as bibliotecas atualizadas no conjunto do Apache Spark sem servidor.
Importante
Os problemas podem ser arrisos ao utilizar pip e conda em conjunto. Ao combinar pip e conda, é melhor seguir estas melhores práticas recomendadas.
Passos seguintes
- Ver as bibliotecas predefinidas: suporte da versão do Apache Spark