Eventos
Junte-se a nós na FabCon Vegas
31 de mar., 23 - 2 de abr., 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registre-se hoje mesmoNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Use as estratégias a seguir para otimizar o desempenho das transformações em fluxos de dados de mapeamento nos pipelines do Azure Data Factory e do Azure Synapse Analytics.
Nas transformações de junções, pesquisas e existências, se um ou ambos os fluxos de dados forem pequenos o bastante para se ajustarem à memória do nó de trabalho, é possível otimizar o desempenho habilitando a Transmissão. A transmissão é quando você envia quadros de dados pequenos para todos os nós do cluster. Isso permite que o mecanismo do Spark execute uma junção sem reorganizar os dados no fluxo maior. Por padrão, o mecanismo do Spark decide automaticamente se deseja ou não transmitir um lado de uma junção. Se você já conhecer seus dados de entrada e souber que um fluxo de dados é menor do que o outro, você poderá selecionar a transmissão Fixa. A transmissão fixa força o Spark a transmitir o fluxo selecionado.
Se o tamanho dos dados transmitidos for muito grande para o nó do Spark, você poderá receber um erro de memória insuficiente. Para evitar erros de memória insuficiente, use clusters com otimização de memória. Se a transmissão alcançar o tempo limite durante execuções de fluxo de dados, desative a otimização de transmissão. No entanto, isso resultará em fluxos de dados de execução mais lentos.
Ao trabalhar com fontes de dados que podem levar mais tempo para consultar, como consultas de banco de dados grandes, é recomendável desativar a transmissão para junções. Uma fonte com tempos de consulta longos pode fazer com que o Spark alcance o tempo limite quando o cluster tenta transmitir para os nós de computação. Outra boa opção para desativar a transmissão é ter um fluxo em seu fluxo de dados agregando valores para usar posteriormente em uma transformação de pesquisa. Esse padrão pode confundir o otimizador do Spark e fazer com que ele alcance o tempo limite.
Se você usar valores literais em suas condições de junção ou tiver várias correspondências em ambos os lados de uma junção, o Spark a executará como uma junção cruzada. Uma junção cruzada é um produto cartesiano completo que filtra os valores associados. Isso é mais lento do que outros tipos de junção. Verifique se você tem referências de coluna em ambos os lados de suas condições de junção para não afetar o desempenho.
Ao contrário da junção de mesclagem em ferramentas como o SSIS, a transformação de junção não é uma operação de junção de mesclagem obrigatória. As chaves de junção não exigem classificação antes da transformação. Não é recomendável usar transformações de classificação no fluxos de dados de mapeamento.
A Transformação de janelas em fluxo de dados de mapeamento particiona os dados por valor em colunas que você seleciona como parte da cláusula over()
nas configurações de transformação. Há uma série de funções analíticas e de agregação muito populares expostas na transformação de janelas. No entanto, se seu caso de uso for gerar uma janela sobre todo o conjunto de dados para fins de classificação rank()
ou número de linha rowNumber()
, é recomendável que você use a Transformação de classificação e a Transformação chave alternativa. Essas transformações executarão melhor as operações completas de conjunto de dados usando essas funções.
Determinadas transformações, como junções e agregações, reorganizam suas partições de dados e podem levar a dados distorcidos. Dados distorcidos significam que os dados não foram distribuídos uniformemente entre as partições. Dados muito distorcidos podem levar a transformações de downstream mais lentas e gravações de coletor. Você pode verificar a distorção de seus dados em qualquer ponto de uma execução de fluxo de dados clicando na transformação, na tela Monitoramento.
A tela de monitoramento mostra como os dados são distribuídos em cada partição junto a duas métricas, distorção e curtose. A distorção mede a assimetria dos dados e pode ter um valor positivo, zero, negativo ou indefinido. Distorção negativa significa que a cauda esquerda é maior do que a direita. A curtose é a medida que indica se os dados são pesados ou leves. Não é desejável obter valores altos de curtose. Os intervalos ideais de distorção ficam entre -3 e 3, e os intervalos de curtose são inferiores a 10. Uma maneira fácil de interpretar esses números é examinar o gráfico de partição e observar se uma barra é maior do que o restante.
Se os dados não forem particionados uniformemente após uma transformação, é possível usar a Guia Otimizar para reparticionar. Reorganizar os dados leva tempo e pode não melhorar o desempenho do fluxo de dados.
Dica
Se você reparticionar seus dados, mas tiver transformações de downstream que reorganizam seus dados, use o particionamento de hash em uma coluna usada como chave de junção.
Observação
As transformações dentro de seu fluxo de dados (com exceção da transformação do coletor) não modificam a partição de arquivos e pastas de dados inativos. O particionamento em cada transformação reparticiona os dados dentro dos quadros de dados do cluster Spark sem servidor temporário que o ADF gerencia para cada uma de suas execuções de fluxo de dados.
Consulte outros artigos sobre Fluxo de Dados relacionados ao desempenho:
Eventos
Junte-se a nós na FabCon Vegas
31 de mar., 23 - 2 de abr., 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registre-se hoje mesmoTreinamento
Módulo
Transformação sem código em escala com o Azure Data Factory - Training
Integração de dados em escala com o Azure Data Factory ou o pipeline do Azure Synapse
Certificação
Microsoft Certified: Fabric Data Engineer Associate - Certifications
Como engenheiro de dados do Fabric, você deve ter experiência com padrões de carregamento de dados, arquiteturas de dados e processos de orquestração.