Mesclagem de embaralhamento baixo de ordem aleatória no Azure Databricks

Observação

A mesclagem de embaralhamento baixo está em disponibilidade geral (GA) no Databricks Runtime 10.4 LTS e superior e em Visualização Pública no Databricks Runtime 9.1 LTS. O Databricks recomenda que os clientes de versão prévia migrem para o Databricks Runtime 10.4 LTS ou superior.

O comando MERGE é usado para executar atualizações simultâneas, inserções e exclusões de uma tabela Delta Lake. Azure Databricks tem uma implementação otimizada de MERGE que melhora substancialmente o desempenho de cargas de trabalho comuns, reduzindo o número de operações de shuffle.

A mesclagem de embaralhamento baixo 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 embaralhados é reduzida significativamente, levando a um melhor desempenho. A mesclagem em ordem aleatória baixa também reduz a necessidade de os usuários executarem OPTIMIZE novamente após a realização de uma operação MERGE.

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 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 embaralhamento baixo 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 de embaralhamento baixo 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

A mesclagem em ordem aleatória baixa é mais rápida e beneficia as operações subsequentes. A implementação anterior MERGE alterou totalmente o layout de dados não modificados, degradando o desempenho em operações subsequentes. A mesclagem em ordem aleatória baixa preserva o layout de dados existente dos registros não modificados, incluindo o layout de clustering líquido, na medida do possível, o desempenho se degrada mais lentamente após a execução de um ou mais comandos MERGE.

Observação

A mesclagem de embaralhamento baixo de ordem aleatória tenta preservar o layout dos dados existentes que não são modificados. O layout dos dados atualizados ou recém-inseridos pode não ser ideal, portanto, ainda pode ser necessário executar OPTIMIZE em tabelas com clusterização líquida habilitada.

Disponibilidade

A mesclagem de embaralhamento baixo 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 no Databricks Runtime 10.4 e superior.

Ordenação Z herdada

Para tabelas que usam a ordenação Z, a mesclagem em ordem aleatória baixa também tenta preservar o layout de ordenação Z existente em dados não modificados, na medida do possível. O layout de dados de dados atualizados ou recém-inseridos pode não ser ideal, portanto, ainda pode ser necessário executar OPTIMIZE ZORDER BY após uma MERGE operação. O Databricks recomenda o uso de clustering líquido para todas as novas tabelas.