Pular para o conteúdo principal

Low shuffle merge on Databricks

nota

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 .

nota

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.