Compartilhar via


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

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

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

Uma execução de pipeline no Azure Data Factory define uma instância de uma execução de pipeline. Por exemplo, digamos que você tem um pipeline que é executado às 8h, 9h e 10h. Nesse caso, há três execuções de pipeline separadas. Cada execução de pipeline possui uma ID de execução de pipeline exclusiva. A ID de execução é um GUID (identificador global exclusivo) que define essa execução de pipeline específica.

As execuções de pipeline normalmente são instanciadas por meio da passagem de argumentos para parâmetros definidos no pipeline. Você pode executar um pipeline manualmente ou usando um gatilho. Consulte Execução de pipeline e gatilhos no Azure Data Factory para mais detalhes.

Problemas comuns, causas e soluções

Um pipeline do Azure Functions app gera um erro com conectividade de ponto de extremidade privada

Você tem uma fábrica de dados 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ções. Você tentou três métodos diferentes, mas um retorna erro "Solicitação inválida" e os outros dois métodos retornam "Erro 103 proibido".

Causa

Atualmente, o Azure Data Factory não oferece suporte a um conector de ponto de extremidade privado para aplicativos de funções. Azure Functions rejeita chamadas porque está configurada para permitir somente conexões de um link privado.

Resolução

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

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

Causa

Quando você cancela uma execução de pipeline, o monitoramento de pipeline muitas vezes mostra o status do progresso. Isso ocorre 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ê verá um erro "DelimitedTextMoreColumnsThanDefined" ao copiar um pipeline

Causa

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 aspas ou algum problema de dados, o pipeline poderá gerar esse 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 Cópia. Dessa forma, para cópias em massa ou migrar seus dados de um data Lake para outro, o Data Factory não abrirá os arquivos para ler o esquema. Em vez disso, o Azure Data Factory trata cada arquivo como binário e o copia para o outro local.

Uma execução de pipeline falha quando você atinge o limite de capacidade do runtime de integração para o 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'.

Causa

Você atingiu o limite de capacidade do runtime de integração. Você pode estar executando uma grande quantidade de fluxo de dados usando o mesmo runtime de integração ao mesmo tempo. Confira Assinatura do Azure e limites de serviço, cotas e restrições para conhecer os detalhes.

Resolução

  • Execute seus pipelines em tempos de gatilho diferentes.
  • Crie um novo runtime de integração e divida seus pipelines entre vários runtimes 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.”}}

Causa

Os pipelines podem usar a atividade da Web para chamar métodos da API REST do ADF se e somente se o membro do Azure Data Factory tiver a função de Colaborador atribuída. Primeiro, você precisa configurar e adicionar a identidade gerenciada do Azure Data Factory à função de segurança 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 da API REST do ADF se e somente se a identidade gerenciada do Azure Data Factory tiver a função Colaborador atribuída. Comece abrindo o portal do Azure e clicando no link Todos os recursos no menu à esquerda. Selecione o Azure data Factory para adicionar a 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 a falha no nível da atividade em pipelines

Causa

A orquestração do Azure Data Factory permite a lógica condicional e permite que os usuários realizem caminhos diferentes com base no resultado de uma atividade anterior. Ela permite quatro caminhos condicionais: Após êxito (aprovação padrão), Após a falha, Após conclusãoe Após ignorar.

O Azure Data Factory avalia o resultado de todas as atividades de nível folha. Os resultados do pipeline serão bem-sucedidos somente se todas as folhas forem bem-sucedidas. Se uma atividade folha tiver sido ignorada, avaliaremos sua atividade pai.

Resolução

Como monitorar falhas de pipeline em intervalos regulares

Causa

Pode ser necessário monitorar pipelines com falha do Azure Data Factory em intervalos de, digamos, 5 minutos. Você pode consultar e filtrar as execuções de pipeline de um data factory usando o ponto de extremidade.

Resolução

O aumento do grau de paralelismo não resulta em maior taxa de transferência

Causa

O grau de paralelismo em ForEach é 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 garante que nunca ultrapassaremos o valor definido. Você deve ver isso como um limite a ser aplicado ao controlar o acesso simultâneo às suas fontes e coletores.

Fatos conhecidos sobre ForEach

  • O ForEach tem uma propriedade chamada contagem(n) em lote, em que o valor padrão é 20 e o máximo é 50.
  • A contagem em lotes, n, é usada para construir n filas.
  • Cada fila é executada em sequência, mas você pode ter várias filas em execução em paralelo.
  • As filas são pré-criadas. Isso significa que não há rebalanceamento das filas durante o tempo de execução.
  • A qualquer momento, você terá no máximo um item sendo processado por fila. Isso significa que no máximo n itens estão sendo processados em um determinado momento.
  • O tempo total de processamento do 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 maneira como as filas são construídas, o cliente pode melhorar o desempenho do foreach definindo múltiplos de foreach, onde cada foreach tem itens com tempo de processamento semelhante.
  • Isso garante que execuções longas sejam processadas em paralelo, em vez de sequencialmente.

O status do pipeline fica em fila ou paralisado por um longo período

Causa

Isso pode ocorrer 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á execuções de pipeline antigas em andamento.

  • Limites de monitoramento: Vá para a tela de criação, selecione seu pipeline e determine se ele tem uma propriedade de simultaneidade atribuída a ele. Nesse caso, acesse a exibição Monitoramento e verifique se não há nada nos últimos 45 dias em andamento. Se houver algo em andamento, você pode cancelar e a nova execução do pipeline deverá começar.

  • Problemas transitórios: É possível que sua execução tenha sido afetada por um problema temporário de rede, falhas de credenciais, interrupções de serviços etc. Se isso acontecer, o Azure Data Factory terá 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ê poderá executar novamente as atividades se as tiver cancelados ou se houver falha de acordo com Executar novamente após falhas de atividade. Esse processo ocorre a cada uma hora, portanto, se a operação ficar parada por mais de uma hora, crie um caso de suporte.

Tempos de inicialização mais longos para atividades em fluxo de dados e cópia do ADF

Causa

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

Resolução

  • Se cada atividade de cópia estiver demorando até 2 minutos para iniciar e o problema ocorrer principalmente em uma junção de rede virtual (vs. Azure IR), esse talvez seja um problema de desempenho de cópia. Para examinar as etapas de solução de problemas, vá para a Melhoria do desempenho da cópia.
  • Você pode usar o recurso de vida útil para diminuir o tempo de inicialização do cluster para atividades de fluxo de dados. Revisão Fluxo de Dados Integration Runtime.

Como lidar com problemas de limite de capacidade no SHIR (Runtime de Integração Auto-hospedada)

Causa

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

Resolução

  • Se você encontrar um problema de capacidade de SHIR, atualize a VM para aumentar o nó e 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-hospedado, que possam gerar uma fila longa, confira Solucionar problemas de runtime de integração auto-hospedada.

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

Causa

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

Resolução

Mensagem de erro - "código":"BadRequest", "mensagem":"Nulo"

Causa

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

Resolução

Execute o rastreamento de rede da sua chamada de API do portal ADF usando o navegador Microsoft Edge/Chrome Ferramentas do desenvolvedor. Você verá uma 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ê prosseguirá com o restante das chamadas de uso do ADF no navegador.

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

Causa

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

Causa

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

Resolução

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

Falha no carregamento do construtor de expressões

Causa

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

Resolução

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

"Code":"BadRequest","message":"ErrorCode=FlowRunSizeLimitExceeded

Causa

Você encadeou muitas atividades.

Resolução

Você pode dividir seus pipelines em categorias menores (subpipelines) e agrupá-los com a atividade ExecutePipelined.

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

Causa

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

Resolução

  • Use a computação com otimização de memória ao lidar com uma grande quantidade de dados e transformações.
  • Reduza o tamanho do lote no caso de uma atividade For Each.
  • Escale verticalmente seus bancos de dados e depósitos para corresponder ao desempenho do ADF.
  • Use um IR (runtime de Integração) separado para atividades executadas em paralelo.
  • Ajuste as partições na fonte e no coletor adequadamente.
  • Examine as Otimizações de fluxo de dados

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

Causa

O tipo de falha é problema de configuração do usuário. Uma cadeia de caracteres de parâmetros, em vez de matriz, é passada para o pipeline filho.

Resolução

Insira a atividade executar pipeline para o parâmetro de pipeline como @createArray('a','b'), por exemplo, se você quiser passar os parâmetros 'a' e 'b'. Se você quiser passar números, por exemplo, use @createArray(1,2,3). Use a função createArray para forçar a passagem de parâmetros como uma matriz.

Para obter mais ajuda com a solução de problemas, experimente estes recursos: