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 é utilizado para realizar atualizações, inserções e exclusões simultâneas no Delta Lake table. 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 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 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
só update um número relativamente pequeno de linhas em um table. No entanto, o Delta tables só pode ser atualizado por arquivo. Quando o comando MERGE
precisa update 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 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 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 mesclagem de baixa embaralhamento tenta preservar o layout de dados existente dos registros não modificados, incluindo de otimização de ordem Z com base no melhor esforço. Assim, com a mesclagem aleatória reduzida, o desempenho das operações em um Delta table deteriorará 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 baixa shuffle é habilitada por padrão no Databricks Runtime 10.4 e superior. 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.