Compartilhar via


Interpretar códigos de erro no Synapse Analytics

Há muitos fatores que podem fazer parte do motivo de falha de um aplicativo Spark no Azure Synapse Analytics atualmente. Por exemplo, a falha pode se dever a um erro do sistema ou até mesmo a um erro relacionado ao usuário. Anteriormente, todos os erros correspondentes a trabalhos com falha no Synapse Analytics eram expostos com um código de erro genérico exibindo LIVY_JOB_STATE_DEAD. Esse código de erro não fornecia mais informações sobre o motivo de falha do trabalho. Ele exige um esforço significativo para identificar a causa raiz, com pesquisas no driver, executor, evento Spark, logs do Livy, até encontrar uma resolução.

Captura de tela do código de erro do Apache Spark sem uma mensagem detalhada.

Apresentamos uma lista mais precisa de códigos de erro que substitui a mensagem genérica anterior. A nova mensagem descreve a causa da falha. Sempre que um trabalho falha no Azure Synapse Analytics, a funcionalidade de tratamento de erro analisa e verifica os logs no back-end para identificar a causa raiz. Em seguida, exibe uma mensagem para o usuário no painel de monitoramento junto com as etapas para resolver o problema.

Captura de tela do código de erro do Apache Spark com uma mensagem detalhada.

Habilitar classificação de erro no Synapse

A funcionalidade de classificação de erro pode ser habilitada ou desabilitada definindo a seguinte configuração do Spark para true ou false no nível do trabalho ou do pool:

livy.rsc.synapse.error-classification.enabled

A seção a seguir lista alguns tipos de erros com suporte no momento. Estamos continuamente refinando e adicionando mais códigos de erro a esses, aprimorando o nosso modelo.

Categorias de código de erro

Cada código de erro é classificado em um dos quatro buckets a seguir:

  1. Usuário – Indicando um erro do usuário
  2. Sistema – Indicando um erro do sistema
  3. Ambíguo – Pode ser um erro do usuário ou do sistema
  4. Desconhecido – Nenhuma classificação ainda, provavelmente porque o tipo de erro não está incluído no modelo

Exemplos de códigos de erro para cada tipo de classificação

Spark_User_TypeError_TypeNotIterable

No Python, o erro TypeError: argument of type 'insert type' is not iterable ocorre quando o operador de associação (in, not in) é usado para validar a associação de um valor em objetos não iteráveis, como lista, tupla, dicionário. Isso geralmente ocorre devido à pesquisa de valor em um objeto não iterável. Soluções possíveis:

  • Verifique se o valor está presente no objeto iterável.
  • Se você quiser verificar um valor para outro, use o operador lógico em vez do Operador de Associação.
  • Se o operador de associação contiver o valor "Nenhum", ele não poderá iterar, e uma verificação nula ou um padrão atribuído deverá ser feito.
  • Verifique se o tipo do valor usado pode realmente ser verificado e se a digitação está correta.

Spark_System_ABFS_OperationFailed

Falha em uma operação com o ADLS Gen2.

Este erro ocorre tipicamente por um problema de permissões.

Verifique se todos os recursos do ADLS Gen2 referenciados no trabalho do Spark têm a função RBAC "Colaborador de Dados de Blob de Armazenamento" nas contas de armazenamento das quais se espera que o trabalho leia e grave. Verifique os logs deste aplicativo Spark. Navegue até o Synapse Studio, selecione a guia Monitorar no painel esquerdo. Na seção Atividades, selecione Aplicativos Apache Spark e localize o seu trabalho do Spark na lista. Para obter o nome da conta de armazenamento do ADLS Gen2 que está enfrentando esse problema, inspecione os logs disponíveis na guia Logs na parte inferior desta página.

Spark_Ambiguous_ClassLoader_NoClassDefFound

Não foi possível encontrar uma classe exigida pelo código quando o script foi executado.

Confira as seguintes páginas para obter a documentação de gerenciamento de pacotes:

Para cenários do Notebook: Apache Spark gerencia pacotes para trabalhos interativos

Para cenários de lote do Spark (confira a seção 6): Apache Spark gerencia pacotes para trabalhos em lote

Verifique se todas as dependências de código estão incluídas nas execuções do JARs Synapse. Se você não incluir ou não puder incluir JARs de terceiros com o seu próprio código, verifique se todas as dependências estão incluídas nos pacotes de workspace para o pool do Spark no qual você está executando o código, ou se elas estão incluídas na listagem "Arquivos de referência" para o envio em lote do Spark. Confira a documentação acima para obter mais informações.

Spark_Unknown_Unknown_java.lang.Exception

Uma falha desconhecida, o modelo não foi capaz de classificar.

Os códigos de erro (incluindo e além da lista mostrada acima), juntamente com as instruções de solução de problemas sobre como resolver o problema, aparecerão no painel de erros do aplicativo Synapse Studio se essa funcionalidade estiver habilitada.

Observação

Se você tiver criado qualquer ferramenta em torno do trabalho de monitoramento do Synapse que verifica se há um trabalho com falha filtrando o código de erro LIVY_JOB_STATE_DEAD, seu aplicativo não funcionará mais. Porque os códigos de erro retornados seriam diferentes, conforme mencionado acima. Modifique os scripts adequadamente para utilizar essa funcionalidade ou desabilitá-la, se ela não for necessária.