Solucionar problemas de orquestração e gatilhos de pipeline no Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Uma execução de pipeline do Azure Data Factory define uma instância de uma execução de pipeline. Por exemplo, digamos que você tenha um pipeline que seja executado às 8h00, 9h00 e 10h00. Neste caso, existem três execuções de pipeline separadas. Cada execução de pipeline tem um ID de execução de pipeline exclusivo. Um ID de execução é um identificador exclusivo global (GUID) que define exclusivamente essa execução de pipeline em particular.

Normalmente, as execuções de pipeline são instanciadas pela transmissão de argumentos a parâmetros que são definidos no pipeline. Você pode executar um pipeline manualmente ou usando um gatilho. Consulte Execução e gatilhos de pipeline no Azure Data Factory para obter detalhes.

Problemas, causas e soluções comuns

Um pipeline de aplicativo do Azure Functions gera um erro com conectividade de ponto de extremidade privado

Você tem o Data Factory e um aplicativo de função em execução em um ponto de extremidade privado no Azure. Você está tentando executar um pipeline que interage com o aplicativo de função. Você tentou três métodos diferentes, mas um retorna o erro "Solicitação incorreta" e os outros dois métodos retornam "103 Erro proibido".

Motivo

Atualmente, o Data Factory não suporta um conector de ponto de extremidade privado para aplicativos de função. O Azure Functions rejeita chamadas porque está configurado para permitir apenas conexões de um link privado.

Resolução

Crie um ponto de extremidade PrivateLinkService e forneça o DNS do seu aplicativo de função.

Uma execução de pipeline é cancelada, mas o monitor ainda mostra o status de progresso

Motivo

Quando você cancela uma execução de pipeline, o monitoramento de pipeline geralmente ainda mostra o status de progresso. Isso acontece devido a um problema de cache do navegador. Você também pode não ter os filtros de monitoramento corretos.

Resolução

Atualize o navegador e aplique os filtros de monitoramento corretos.

Você vê um erro "DelimitedTextMoreColumnsThanDefined" ao copiar um pipeline

Motivo

Se uma pasta que você está copiando contiver arquivos com esquemas diferentes, como número variável de colunas, delimitadores diferentes, configurações de caracteres de cotação ou algum problema de dados, o pipeline do Data Factory poderá gerar este erro:

Operation on target Copy_sks failed: Failure happened on 'Sink' side. ErrorCode=DelimitedTextMoreColumnsThanDefined, 'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error found when processing 'Csv/Tsv Format Text' source '0_2020_11_09_11_43_32.avro' with row number 53: found more columns than expected column count 27., Source=Microsoft.DataTransfer.Common,'

Resolução

Selecione a opção Cópia binária ao criar a atividade Copiar. Dessa forma, para cópias em massa ou migração de dados de um data lake para outro, o Data Factory não abrirá os arquivos para ler o esquema. Em vez disso, o Data Factory tratará cada arquivo como binário e o copiará para o outro local.

Uma execução de pipeline falha quando você atinge o limite de capacidade do tempo de execução de integração para fluxo de dados

Problema

Mensagem de erro:

Type=Microsoft.DataTransfer.Execution.Core.ExecutionException,Message=There are substantial concurrent MappingDataflow executions which is causing failures due to throttling under Integration Runtime 'AutoResolveIntegrationRuntime'.

Motivo

Você atingiu o limite de capacidade do tempo de execução da integração. Você pode estar executando uma grande quantidade de fluxo de dados usando o mesmo tempo de execução de integração ao mesmo tempo. Consulte Limites de assinatura, cotas e restrições de serviço e assinatura do Azure para obter detalhes.

Resolução

  • Execute seus pipelines em diferentes momentos de gatilho.
  • Crie um novo tempo de execução de integração e divida seus pipelines em vários tempos de execução de integração.

Um erro de execução de pipeline ao invocar a api REST em uma atividade da Web

Problema

Mensagem de erro:

Operation on target Cancel failed: {“error”:{“code”:”AuthorizationFailed”,”message”:”The client ‘<client>’ with object id ‘<object>’ does not have authorization to perform action ‘Microsoft.DataFactory/factories/pipelineruns/cancel/action’ over scope ‘/subscriptions/<subscription>/resourceGroups/<resource group>/providers/Microsoft.DataFactory/factories/<data factory name>/pipelineruns/<pipeline run id>’ or the scope is invalid. If access was recently granted, please refresh your credentials.”}}

Motivo

Os pipelines podem usar a atividade da Web para chamar métodos ADF REST API se e somente se o membro do Azure Data Factory receber a função de Colaborador. Primeiro, você deve configurar e adicionar a identidade gerenciada do Azure Data Factory à função de segurança de Colaborador.

Resolução

Antes de usar a API REST do Azure Data Factory na guia Configurações de uma atividade da Web, a segurança deve ser configurada. Os pipelines do Azure Data Factory podem usar a atividade da Web para chamar métodos API REST ADF se e somente se a identidade gerenciada do Azure Data Factory receber a função de Colaborador . Comece abrindo o portal do Azure e clicando no link Todos os recursos no menu à esquerda. Selecione Azure Data Factory para adicionar identidade gerenciada do ADF com a função de Colaborador clicando no botão Adicionar na caixa Adicionar uma atribuição de função.

Como verificar e ramificar o sucesso e o fracasso no nível de atividade em pipelines

Motivo

A orquestração do Azure Data Factory permite a lógica condicional e permite que os usuários tomem caminhos diferentes com base no resultado de uma atividade anterior. Ele permite quatro caminhos condicionais: Upon Success (default pass), Upon Failure, Upon Completion e Upon Skip.

O Azure Data Factory avalia o resultado de todas as atividades de nível folha. Os resultados do pipeline só são bem-sucedidos se todas as folhas forem bem-sucedidas. Se uma atividade foliar foi ignorada, avaliamos sua atividade principal.

Resolução

Como monitorar falhas de pipeline em intervalos regulares

Motivo

Talvez seja necessário monitorar pipelines do Data Factory com falha em intervalos, digamos 5 minutos. Você pode consultar e filtrar as execuções de pipeline de uma fábrica de dados usando o ponto de extremidade.

Resolução

O aumento do grau de paralelismo não resulta em maior rendimento

Motivo

O grau de paralelismo em ForEach é, na verdade, o grau máximo de paralelismo. Não podemos garantir um número específico de execuções acontecendo ao mesmo tempo, mas esse parâmetro garantirá que nunca ultrapassaremos o valor que foi definido. Você deve ver isso como um limite, a ser aproveitado ao controlar o acesso simultâneo às suas fontes e coletores.

Factos conhecidos sobre ForEach

  • Foreach tem uma propriedade chamada batch count(n) onde o valor padrão é 20 e o máximo é 50.
  • A contagem de lotes, n, é utilizada para construir n filas.
  • Cada fila é executada sequencialmente, mas pode ter várias filas em execução em paralelo.
  • As filas são pré-criadas. Tal significa que não há reequilíbrio das filas durante o runtime.
  • A qualquer momento, você tem no máximo um item sendo processado por fila. Isso significa no máximo n itens sendo processados a qualquer momento.
  • O tempo total de processamento foreach é igual ao tempo de processamento da fila mais longa. Isso significa que a atividade foreach depende de como as filas são construídas.

Resolução

  • Você não deve usar a atividade SetVariable dentro de For Each que é executada em paralelo.
  • Levando em consideração a forma como as filas são construídas, o cliente pode melhorar o desempenho de foreach definindo múltiplos de foreach onde cada foreach terá itens com tempo de processamento semelhante.
  • Isso garantirá que as longas tiragens sejam processadas em paralelo e de forma bastante sequencial.

O status do pipeline está na fila ou preso por um longo tempo

Motivo

Isso pode acontecer por vários motivos, como atingir limites de simultaneidade, interrupções de serviço, falhas de rede e assim por diante.

Resolução

  • Limite de simultaneidade: se o pipeline tiver uma política de simultaneidade, verifique se não há nenhum pipeline antigo em andamento.

  • Limites de monitoramento: vá para a tela de criação do ADF, selecione seu pipeline e determine se ele tem uma propriedade de simultaneidade atribuída a ele. Se tiver, aceda à vista Monitorização e confirme se não há nada nos últimos 45 dias que esteja em curso. Se encontrar alguma atividade em curso, poderá cancelá-la. A nova execução de pipeline deverá começar.

  • Problemas transitórios: É possível que sua execução tenha sido afetada por um problema transitório de rede, falhas de credenciais, interrupções de serviços, etc. Se isso acontecer, o Azure Data Factory tem um processo de recuperação interno que monitora todas as execuções e as inicia quando percebe que algo deu errado. Você pode executar novamente pipelines e atividades conforme descrito aqui.. Você pode executar atividades novamente se tiver cancelado a atividade ou se tiver uma falha de acordo com a repetição de falhas de atividade. Esse processo acontece a cada uma hora, portanto, se sua execução estiver presa por mais de uma hora, crie um caso de suporte.

Tempos de inicialização mais longos para atividades no ADF Copy and Data Flow

Motivo

Isso pode acontecer se você não tiver implementado o recurso de tempo de vida para o fluxo de dados ou SHIR otimizado.

Resolução

  • Se cada atividade de cópia estiver levando até 2 minutos para ser iniciada e o problema ocorrer principalmente em uma associação de VNet (versus IR do Azure), isso pode ser um problema de desempenho de cópia. Para rever os passos de resolução de problemas, aceda a Copiar Melhoria de Desempenho.
  • Você pode usar o recurso de tempo de vida para diminuir o tempo de inicialização do cluster para atividades de fluxo de dados. Consulte o Data Flow Integration Runtime.

Atingindo problemas de capacidade no SHIR (Self-Hosted Integration Runtime)

Motivo

Isso pode acontecer se você não tiver ampliado o SHIR de acordo com sua carga de trabalho.

Resolução

  • Se você encontrar um problema de capacidade do SHIR, atualize a VM para aumentar o nó para equilibrar as atividades. Se você receber uma mensagem de erro sobre uma falha ou erro geral de IR auto-hospedado, uma atualização de IR auto-hospedado ou problemas de conectividade de IR auto-hospedados, que podem gerar uma fila longa, vá para Solucionar problemas de tempo de execução de integração auto-hospedada.

Mensagens de erro devido a longas filas para cópia do ADF e fluxo de dados

Motivo

Mensagens de erro longas relacionadas à fila podem aparecer por vários motivos.

Resolução

Mensagem de erro - "code":"BadRequest", "message":"null"

Motivo

É um erro do usuário porque a carga JSON que atinge management.azure.com está corrompida. Nenhum log será armazenado porque a chamada do usuário não atingiu a camada de serviço do ADF.

Resolução

Execute o rastreamento de rede de sua chamada de API do portal ADF usando as ferramentas de desenvolvedor do navegador Edge/Chrome. Você verá a carga JSON ofensiva, que pode ser devido a um caractere especial (por exemplo, $), espaços e outros tipos de entrada do usuário. Depois de corrigir a expressão de cadeia de caracteres, você continuará com o restante das chamadas de uso do ADF no navegador.

As atividades ForEach não são executadas no modo paralelo

Motivo

Você está executando o ADF no modo de depuração.

Resolução

Execute o pipeline no modo de gatilho.

Não é possível publicar porque a conta está bloqueada

Motivo

Você fez alterações na ramificação de colaboração para remover o gatilho de evento de armazenamento. Você está tentando publicar e encontrar Trigger deactivation error mensagem.

Resolução

Isso ocorre porque a conta de armazenamento, usada para o gatilho de evento, está sendo bloqueada. Desbloqueie a conta.

Falha ao carregar o construtor de expressões

Motivo

O construtor de expressões pode falhar ao carregar devido a problemas de rede ou cache com o navegador da Web.

Resolução

Atualize o navegador da Web para a versão mais recente de um navegador compatível, limpe os cookies do site e atualize a página.

"Código":"BadRequest","message":"ErrorCode=FlowRunSizeLimitExceeded

Motivo

Você acorrentou muitas atividades.

Resolução

Você pode dividir seus pipelines em subpipelines e juntá-los à atividade ExecutePipeline .

Como otimizar o pipeline com fluxos de dados de mapeamento para evitar erros internos do servidor, erros de simultaneidade, etc. durante a execução

Motivo

Você não otimizou o fluxo de dados de mapeamento.

Resolução

  • Use a computação otimizada para memória ao lidar com uma grande quantidade de dados e transformações.
  • Reduza o tamanho do lote no caso de um para cada atividade.
  • Aumente a escala de seus bancos de dados e armazéns para corresponder ao desempenho do seu ADF.
  • Use um IR (tempo de execução de integração) separado para atividades executadas em paralelo.
  • Ajuste as partições na fonte e colete de acordo.
  • Revisar otimizações de fluxo de dados

Código de erro "BadRequest" ao passar parâmetros para pipelines filho

Motivo

O tipo de falha é um problema de configuração do usuário. String de parâmetros, em vez de Array, é passada para o pipeline filho.

Resolução

Input execute a atividade do pipeline para o parâmetro do pipeline como @createArray('a','b') por exemplo, se você quiser passar os parâmetros 'a' e 'b'. Se quiser passar números, por exemplo, use @createArray(1,2,3). Use a função createArray para forçar parâmetros que estão sendo passados como uma matriz.

Para obter mais ajuda na solução de problemas, tente estes recursos: