Partilhar via


Mesclagem de baixa shuffle no Azure Databricks

Observação

A mesclagem de baixa shuffle está disponível em geral (GA) no Databricks Runtime 10.4 lTS e superior e no Public Preview no Databricks Runtime 9.1 LTS. A Databricks recomenda que os clientes do Preview migrem para o Databricks Runtime 10.4 LTS ou superior.

O comando MERGE é usado para executar atualizações, inserções e exclusões simultâneas de uma tabela Delta Lake. O Azure Databricks tem uma implementação otimizada de MERGE que melhora substancialmente o desempenho ao reduzir o número de operações de shuffle em cargas de trabalho comuns.

A mesclagem de baixa shuffle do Databricks oferece melhor desempenho ao processar linhas não modificadas num modo de processamento mais simplificado e separado, em vez de processá-las junto com as linhas modificadas. Como resultado, a quantidade de dados embaralhados é reduzida significativamente, levando a um melhor desempenho. A mesclagem de baixa shuffle também reduz a necessidade de os usuários executarem novamente o comando OPTIMIZE ZORDER BY depois de executar uma operação MERGE.

Desempenho otimizado

Muitas cargas de trabalho MERGE atualizam apenas um número relativamente pequeno de linhas em uma tabela. No entanto, as tabelas Delta só podem ser atualizadas por arquivo. Quando o comando MERGE precisa atualizar ou excluir um pequeno número de linhas armazenadas em um arquivo específico, ele também deve processar e reescrever todas as linhas restantes armazenadas no mesmo arquivo, mesmo que essas linhas não sejam modificadas. A mesclagem de baixa shuffle otimiza o processamento de linhas não modificadas. Anteriormente, elas eram processadas da mesma forma que as linhas modificadas, passando por vários estágios de embaralhamento e cálculos caros. Na fusão com baixa utilização de shuffle, as linhas não modificadas são processadas sem qualquer shuffle, processamento dispendioso ou outra sobrecarga adicional.

Layout de dados otimizado

Além de ser mais rápida de executar, a fusão com pouca reorganização também beneficia as operações subsequentes. A implementação MERGE anterior fez com que o layout de dados de dados não modificados fosse totalmente alterado, resultando em menor desempenho nas operações subsequentes. A fusão de embaralhamento baixo tenta preservar o layout de dados existente dos registos não modificados, incluindo otimização de ordem Z na medida do possível. Assim, com a baixa mesclagem aleatória, o desempenho das operações em uma tabela Delta se degradará mais lentamente após a execução de um ou mais comandos MERGE.

Observação

A mesclagem com pouca perturbação tenta preservar o layout dos dados em dados existentes que não foram modificados. O layout de dados de dados atualizados ou recém-inseridos pode não ser ideal, portanto, ainda pode ser necessário executar os comandos OPTIMIZE ou OPTIMIZE ZORDER BY.

Disponibilidade

A mesclagem de shuffle baixo é habilitada por padrão no Databricks Runtime 10.4 e posteriores. Em versões anteriores suportadas do Databricks Runtime, pode ser ativado através da definição da configuração spark.databricks.delta.merge.enableLowShuffle para true. Este sinalizador não tem efeito no Databricks Runtime 10.4 e superior.