Partilhar via


Pulo de dados para Delta Lake

Nota

No Databricks Runtime 13.3 e superior, o Databricks recomenda o uso de clustering líquido para layout de tabela Delta. O clustering não é compatível com a ordem Z. Veja Utilizar clustering líquido para tabelas Delta.

As informações de pulo de dados são coletadas automaticamente quando você grava dados em uma tabela Delta. O Delta Lake no Azure Databricks aproveita essas informações (valores mínimos e máximos, contagens nulas e registros totais por arquivo) no momento da consulta para fornecer consultas mais rápidas.

Você deve ter estatísticas coletadas para colunas que são usadas em ZORDER instruções. Consulte O que é Z-ordering?.

Especificar colunas de estatísticas delta

Por padrão, o Delta Lake coleta estatísticas sobre as primeiras 32 colunas definidas no esquema da tabela. Quando a otimização preditiva está ativada, as estatísticas de pulo de arquivo são escolhidas de forma inteligente e não se limitam às primeiras 32 colunas. A otimização preditiva executa ANALYZEautomaticamente , um comando para coletar estatísticas, em tabelas gerenciadas pelo Unity Catalog. A Databricks recomenda habilitar a otimização preditiva para todas as tabelas gerenciadas pelo Unity Catalog para simplificar a manutenção de dados e reduzir os custos de armazenamento. Consulte Otimização preditiva para tabelas gerenciadas do Unity Catalog.

Importante

Otimização preditiva com ANALYZE está em Visualização Pública. Inclui a recolha inteligente de estatísticas durante as gravações. Use este formulário para se inscrever no Visualização Pública.

Se você não estiver usando a otimização preditiva, poderá modificar o comportamento que limita as coleções de estatísticas a 32 colunas definindo uma das seguintes propriedades de tabela:

Propriedade Table Databricks Runtime suportado Description
delta.dataSkippingNumIndexedCols Todas as versões suportadas do Databricks Runtime Aumente ou diminua o número de colunas nas quais a Delta coleta estatísticas. Depende da ordem das colunas.
delta.dataSkippingStatsColumns Databricks Runtime 13.3 LTS e superior Especifique uma lista de nomes de colunas para os quais o Delta Lake coleta estatísticas. Substitui dataSkippingNumIndexedCols.

As propriedades da tabela podem ser definidas na criação da tabela ou com ALTER TABLE instruções. Consulte Referência de propriedades da tabela delta.

A atualização dessas propriedades não recalcula automaticamente as estatísticas dos dados existentes. Em vez disso, afeta o comportamento da coleta de estatísticas futuras ao adicionar ou atualizar dados na tabela. O Delta Lake não aproveita as estatísticas para colunas não incluídas na lista atual de colunas de estatísticas.

No Databricks Runtime 14.3 LTS e superior, se você tiver alterado as propriedades da tabela ou alterado as colunas especificadas para estatísticas, poderá acionar manualmente o recálculo de estatísticas para uma tabela Delta usando o seguinte comando:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

Nota

Cadeias de caracteres longas são truncadas durante a coleta de estatísticas. Você pode optar por excluir colunas longas de cadeia de caracteres da coleção de estatísticas, especialmente se as colunas não forem usadas com frequência para filtrar consultas.

O que é Z-ordering?

Nota

O Databricks recomenda o uso de clustering líquido para todas as novas tabelas Delta. Não é possível utilizar ZORDER em combinação com aglomeração de líquidos.

Z-ordering é uma técnica para colocalizar informações relacionadas no mesmo conjunto de arquivos. Essa colocalidade é usada automaticamente pelo Delta Lake em algoritmos de pulo de dados do Azure Databricks. Esse comportamento reduz drasticamente a quantidade de dados que o Delta Lake no Azure Databricks precisa ler. Para dados de ordem Z, especifique as colunas a serem ordenadas na ZORDER BY cláusula:

OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)

Se você espera que uma coluna seja comumente usada em predicados de consulta e se essa coluna tiver alta cardinalidade (ou seja, um grande número de valores distintos), use ZORDER BY.

Você pode especificar várias colunas para ZORDER BY como uma lista separada por vírgula. No entanto, a eficácia da localidade cai a cada coluna extra. Ordenar Z em colunas que não têm estatísticas coletadas sobre elas seria ineficaz e um desperdício de recursos. Isso ocorre porque o salto de dados requer estatísticas locais de coluna, como min, max e count. Você pode configurar a coleta de estatísticas em determinadas colunas reordenando colunas no esquema ou pode aumentar o número de colunas nas quais coletar estatísticas.

Nota

  • A ordenação Z não é idempotente, mas pretende ser uma operação incremental. Não é garantido que o tempo necessário para a ordenação Z diminua em várias execuções. No entanto, se nenhum novo dado foi adicionado a uma partição que foi apenas ordenada por Z, outra ordem Z dessa partição não terá qualquer efeito.

  • A ordenação Z visa produzir arquivos de dados equilibrados em relação ao número de tuplas, mas não necessariamente o tamanho dos dados no disco. As duas medidas são mais frequentemente correlacionadas, mas pode haver situações em que esse não é o caso, levando a distorções nos tempos de tarefa otimizados.

    Por exemplo, se você ZORDER BY data e seus registros mais recentes são todos muito mais amplos (por exemplo, matrizes mais longas ou valores de cadeia de caracteres) do que os do passado, espera-se que as durações de tarefas do OPTIMIZE trabalho sejam distorcidas, bem como os tamanhos de arquivo resultantes. No entanto, isso é apenas um problema para o OPTIMIZE comando em si, não deve ter qualquer impacto negativo nas consultas subsequentes.