Compartilhar via


Guia de desempenho e ajuste de fluxos de dados de mapeamento

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!

Os fluxos de dados de mapeamento nos pipelines do Azure Data Factory e do Synapse fornecem uma interface sem código para projetar e executar transformações de dados em escala. Se você não conhecer bem os fluxos de dados de mapeamento, consulte a Visão geral do fluxo de dados de mapeamento. Este artigo destaca várias maneiras de ajustar e otimizar seus fluxos de dados para que eles atendam aos parâmetros de comparação de desempenho.

Assista ao vídeo a seguir para ver alguns exemplos de tempo de transformação de dados com fluxos de dados.

Monitoramento de desempenho do fluxo de dados

Depois de verificar sua lógica de transformação usando o modo de depuração, execute o fluxo de dados de ponta a ponta como uma atividade em um pipeline. Os fluxos de dados são operados em um pipeline usando a atividade Executar fluxo de dados. A atividade de fluxo de dados tem uma experiência de monitoramento exclusiva em comparação a outras atividades, exibindo um plano de execução detalhado e o perfil de desempenho da lógica de transformação. Para exibir informações detalhadas de monitoramento de um fluxo de dados, selecione o ícone de óculos na saída de execução da atividade de um pipeline. Para saber mais, consulte Monitoramento de fluxos de dados de mapeamento.

Data Flow Monitor

Ao monitorar o desempenho do fluxo de dados, existem quatro gargalos possíveis a serem observados:

  • Tempo de inicialização do cluster
  • Leitura de uma fonte
  • Tempo de transformação
  • Gravação em um coletor

Data Flow Monitoring

O tempo de inicialização do cluster é o tempo necessário para criar um cluster Apache Spark. Esse valor está localizado no canto superior direito da tela de monitoramento. Os fluxos de dados são executados em um modelo just-in-time, em que cada trabalho usa um cluster isolado. O tempo de inicialização geralmente leva de 3 a 5 minutos. Em trabalhos sequenciais, esse tempo pode ser reduzido ao habilitar um valor de vida útil. Para obter mais informações, consulte a seção Vida útil em Desempenho do Integration Runtime.

Os fluxos de dados utilizam um otimizador Spark que reordena e executa sua lógica de negócios em "estágios" para ter o desempenho mais rápido possível. Para cada coletor no qual o fluxo de dados é gravado, a saída de monitoramento lista a duração de cada estágio de transformação, junto com o tempo necessário para gravar dados no coletor. A maior tempo é provavelmente o gargalo do fluxo de dados. Se o estágio de transformação mais demorado tiver uma origem, é aconselhável otimizar mais o seu tempo de leitura. Se uma transformação estiver demorando muito tempo, é aconselhável reparticionar ou aumentar o tamanho do runtime de integração. Se o tempo de processamento do coletor for longo, é aconselhável escalar verticalmente seu banco de dados ou verificar se não está sendo gerada uma saída para um único arquivo.

Depois de identificar o gargalo do fluxo de dados, use as estratégias de otimização abaixo para melhorar o desempenho.

Teste da lógica do fluxo de dados

Quando você está projetando e testando fluxos de dados da interface do usuário, o modo de depuração permite testar interativamente em um cluster Spark dinâmico, o que permite pré-visualizar dados e executar seus fluxos de dados sem esperar que um cluster se aqueça. Para saber mais, consulte Modo de depuração.

Otimizar guia

A guia Otimizar contém configurações para definir o esquema de particionamento do cluster Spark. Essa guia existe em todas as transformações de fluxo de dados e especifica se você deseja fazer a repartição dos dados após a conclusão da transformação. Ajustar o particionamento fornece controle sobre a distribuição dos dados nos nós de computação e otimizações de localidade de dados que podem ter efeitos tanto positivos como negativos no desempenho geral do fluxo de dados.

Screenshot shows the Optimize tab, which includes Partition option, Partition type, and Number of partitions.

Por padrão, Usar o particionamento atual é selecionado, instruindo o serviço a manter o particionamento de saída atual da transformação. Como o reparticionamento de dados leva tempo, é recomendável Usar o particionamento atual na maioria dos casos. Os cenários nos quais é aconselhável reparticionar dados incluem agregações e junções posteriores, que distorcem significativamente seus dados ou o ao usar particionamento de origem em um banco de dados SQL.

Para alterar o particionamento em qualquer transformação, selecione a guia Otimizar e o botão de opção Definir particionamento. Você receberá uma série de opções para particionamento. O melhor método de particionamento será diferente com base nos volumes de dados, chaves candidatas, valores nulos e cardinalidade.

Importante

A partição única combina todos os dados distribuídos em uma única partição. Essa é uma operação muito lenta, que também afeta significativamente todas as transformações e gravações de downstream. Essa opção é altamente desencorajada, a menos que haja um motivo de negócios explícito para usá-la.

As seguintes opções de particionamento estão disponíveis em todas as transformações:

Round Robin

Round Robin distribui dados igualmente entre partições. Use Round Robin quando você não tiver chaves candidatas adequadas para implementar uma estratégia de particionamento sólida e inteligente. É possível definir o número de partições físicas.

Hash

O serviço produz um hash de colunas para produzir partições uniformes e, desse modo, as linhas com valores semelhantes ficam na mesma partição. Ao usar a opção Hash, teste possíveis distorções de partição. É possível definir o número de partições físicas.

Intervalo dinâmico

O intervalo dinâmico usa intervalos dinâmicos do Spark com base nas colunas ou expressões que você fornecer. É possível definir o número de partições físicas.

Intervalo fixo

Crie uma expressão que forneça um intervalo fixo para valores dentro das colunas de dados particionados. Para evitar distorção de partição, é preciso ter um bom conhecimento sobre os dados antes de usar essa opção. Os valores inseridos para a expressão serão usados como parte de uma função de partição. É possível definir o número de partições físicas.

Chave

Se você tiver uma boa compreensão da cardinalidade dos dados, o particionamento de chaves pode ser uma boa estratégia. O particionamento de chaves cria partições para cada valor exclusivo na sua coluna. Não é possível definir o número de partições, porque esse número se baseará em valores exclusivos nos dados.

Dica

Configurar manualmente o esquema de particionamento reorganiza os dados e pode deslocar os benefícios do otimizador do Spark. Uma prática recomendada é não definir manualmente o particionamento, a menos que você precise.

Nível de log

Se não precisar de cada execução de pipeline das suas atividades de fluxo de dados para registrar completamente todos os logs de telemetria detalhados, você pode definir seu nível de registros em log como "Básico" ou "Nenhum". Ao executar os fluxos de dados no modo “Detalhado” (padrão), você solicita que o serviço registre totalmente a atividade em cada nível de partição individual durante a transformação dos dados. Isso pode ser uma operação dispendiosa. Portanto, habilitar o modo detalhado somente ao solucionar problemas pode melhorar o fluxo geral de dados e o desempenho do pipeline. O modo "Básico" registra apenas as durações de transformação e o modo "Nenhum" fornece apenas um resumo das durações.

Logging level

Consulte outros artigos sobre Fluxo de Dados relacionados ao desempenho: