Mesclagem de baixa shuffle no Azure Databricks
Nota
A mesclagem de baixa shuffle está geralmente disponível (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 que melhora substancialmente o desempenho para cargas de MERGE
trabalho comuns, reduzindo o número de operações aleatórias.
A mesclagem de baixa shuffle do Databricks oferece melhor desempenho processando 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 embaralhados é reduzida significativamente, levando a um melhor desempenho. A mesclagem de baixo shuffle também reduz a necessidade de os usuários executarem novamente o comando OTIMIZE ZORDER BY depois de executar uma MERGE
operação.
Desempenho otimizado
Muitas MERGE
cargas de trabalho 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 MERGE
comando precisa atualizar ou excluir um pequeno número de linhas armazenadas em um determinado arquivo, 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, eles eram processados da mesma forma que as linhas modificadas, passando-os por vários estágios de embaralhamento e cálculos caros. Na mesclagem de baixa shuffle, as linhas não modificadas são processadas sem qualquer shuffles, processamento caro ou outra sobrecarga adicionada.
Layout de dados otimizado
Além de ser mais rápida de executar, a mesclagem de baixo shuffle também beneficia as operações subsequentes. A implementação anterior MERGE
fez com que o layout de dados não modificados fosse totalmente alterado, resultando em menor desempenho em operações subsequentes. A mesclagem de baixa embaralhamento tenta preservar o layout de dados existente dos registros não modificados, incluindo a otimização da ordem Z com base no melhor esforço. 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 MERGE
comandos.
Nota
A mesclagem de baixa shuffle tenta preservar o layout de dados em dados existentes que não são 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 OPTIMIZE
comandos OTIMIZE ZORDER BY ou OTIMIZAR.
Disponibilidade
A mesclagem de baixa shuffle é habilitada por padrão no Databricks Runtime 10.4 e superior. Em versões anteriores suportadas do Databricks Runtime, ele pode ser habilitado definindo a configuração spark.databricks.delta.merge.enableLowShuffle
como true
. Este sinalizador não tem efeito no Databricks Runtime 10.4 e superior.