Low shuffle merge on Databricks
merge com baixa taxa de embaralhamento está disponível para o público em geral (GA) no Databricks Runtime 10.4 LTS e versões superiores, e em versão prévia pública no Databricks Runtime 9.1 LTS. Databricks recomenda que os clientes da versão Preview migrem para Databricks Runtime 10.4 LTS ou superior.
O comando merge é usado para realizar atualizações, inserções e exclusões simultâneas de uma tabela Delta Lake. A Databricks tem uma implementação otimizada do MERGE que melhora substancialmente o desempenho de cargas de trabalho comuns, reduzindo o número de operações de embaralhamento.
merge com baixa taxa de embaralhamento Databricks proporciona melhor desempenho ao processar as linhas não modificadas em um modo de processamento separado e mais simplificado, em vez de processá-las juntamente com as linhas modificadas. Como resultado, a quantidade de dados embaralhados é reduzida significativamente, levando a um melhor desempenho. merge de baixo embaralhamento também reduz a necessidade de os usuários reexecutarem OPTIMIZE após realizarem uma operação MERGE .
Desempenho otimizado
Muitas cargas de trabalho do 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 determinado arquivo, ele também deve processar e reescrever todas as linhas restantes armazenadas no mesmo arquivo, mesmo que essas linhas não tenham sido modificadas. Low shuffle merge otimiza o processamento de linhas não modificadas. Anteriormente, elas eram processadas da mesma forma que as linhas modificadas, passando-as por vários estágios aleatórios e cálculos caros. No low shuffle merge, as linhas não modificadas são processadas sem nenhum shuffle, processamento caro ou outra sobrecarga adicional.
Disposição otimizada de dados
merge de baixo embaralhamento é mais rápida para execução e beneficia as operações subsequentes. A implementação anterior de MERGE alterou totalmente a disposição de dados não modificados, degradando o desempenho em operações subsequentes. merge de baixo embaralhamento preserva a disposição de dados existente dos registros não modificados, incluindo a disposição clusteringlíquido , com base no melhor esforço, o desempenho degrada mais lentamente após a execução de um ou mais comandos MERGE .
merge com embaralhamento baixo tenta preservar os dados conforme os dados existentes que não foram modificados. A disponibilidade de dados atualizados ou recém-inseridos pode não ser ideal, portanto, ainda pode ser necessário executar OPTIMIZE em tabelas com clustering líquido ativado.
Disponibilidade
merge aleatória baixa é habilitada por default no Databricks Runtime 10.4e acima. Em versões anteriores do Databricks Runtime com suporte, ele pode ser ativado definindo a configuração spark.databricks.delta.merge.enableLowShuffle como true. Este sinalizador não tem efeito no Databricks Runtime 10.4e acima.
Z-orderinglegada
Para tabelas que utilizam Z-ordering, merge com embaralhamento baixo também tenta preservar a disposição de Z-order existente nos dados não modificados, com base no melhor esforço. A disposição de dados atualizados ou recém-inseridos pode não ser a ideal, portanto ainda pode ser necessária a execução OPTIMIZE ZORDER BY após MERGE operações. A Databricks recomenda o uso de clustering líquido para todas as novas tabelas.