Mesclagem baixa de ordem aleatória no Azure Databricks

Observação

A mesclagem com shuffle reduzido está em disponibilidade geral (GA) no Databricks Runtime 10.4 ITS e superior e em Visualização Pública no Databricks Runtime 9.1 LTS. O Databricks recomenda que os clientes da Versão Prévia 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 para cargas de trabalho comuns, reduzindo o número de operações de embaralhamento.

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

Desempenho otimizado

Muitas cargas de trabalho MERGE só atualizam 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 baixa de ordem aleatória otimiza o processamento de linhas não modificadas. Anteriormente, elas eram processadas da mesma maneira que as linhas modificadas, passando-as por várias fases de ordem aleatória e cálculos caros. Na mesclagem baixa de ordem aleatória, as linhas não modificadas são processadas sem nenhuma ordem aleatória, processamento caro ou outra sobrecarga adicional.

Layout de dados otimizado

Além de ser mais rápida de executar, a mesclagem baixa de ordem aleatória também beneficia as operações subsequentes. A implementação anterior do MERGE fez com que o layout dos dados de dados não modificados fosse totalmente alterado, resultando em um desempenho inferior nas operações subsequentes. A mesclagem baixa de ordem aleatória tenta preservar ao máximo possível o layout de dados existente dos registros não modificados, incluindo a otimização de ordem Z. Portanto, com a mesclagem baixa de ordem aleatória, o desempenho das operações em uma tabela Delta será reduzido mais lentamente após a execução de um ou mais comandos MERGE.

Observação

A mesclagem baixa de ordem aleatória tenta preservar o layout dos dados existentes que não são modificados. O layout de dados dos dados atualizados ou recentemente inseridos pode não ser o ideal, portanto, talvez ainda seja necessário executar os comandos OPTIMIZE ou OPTIMIZE ZORDER BY.

Disponibilidade

A mesclagem baixa de ordem aleatória é habilitada por padrão no Databricks Runtime 10.4 e superior. Em versões anteriores do Databricks Runtime com suporte, ele pode ser habilitado definindo a configuração spark.databricks.delta.merge.enableLowShuffle como true. Esse sinalizador não tem efeito a partir do Databricks Runtime 10.4.