Pular para o conteúdo principal

Ignorar dados para Delta Lake

nota

Em Databricks Runtime 13.3 e acima, Databricks recomenda o uso do líquido clustering para Delta disposição da tabela. O clustering não é compatível com Z-ordering. Consulte Usar clustering líquido para tabelas Delta.

As informações de data skipping são coletadas automaticamente quando o senhor grava dados em uma tabela Delta. Delta Lake em Databricks aproveita essas informações (valores mínimos e máximos, contagens de nulos e total de registros por arquivo) no momento da consulta para oferecer consultas mais rápidas.

Você deve coletar estatísticas para as colunas usadas nas declarações ZORDER. Veja o que é Z-ordering?.

Especificar colunas de estatísticas Delta

Em default, 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 pular arquivos são escolhidas de forma inteligente e não estão limitadas às primeiras 32 colunas. Otimização preditiva executando automaticamente ANALYZE, um comando para coletar estatísticas, em Unity Catalog gerenciar tabelas. Databricks recomenda habilitar a otimização preditiva para todas as tabelas gerenciais do Unity Catalog para simplificar a manutenção de dados e reduzir os custos de armazenamento. Consulte Otimização preditiva para Unity Catalog gerenciar tabelas.

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

Propriedade da tabela

Databricks Runtime apoiado

Descrição

delta.dataSkippingNumIndexedCols

Todas as versões suportadas do Databricks Runtime

Aumente ou diminua o número de colunas nas quais o Delta coleta estatísticas. Depende da ordem das colunas.

delta.dataSkippingStatsColumns

Databricks Runtime 13.3 LTS e acima

Especifique uma lista de nomes de colunas para as quais o Delta Lake coleta estatísticas. Substitui dataSkippingNumIndexedCols.

As propriedades da tabela podem ser definidas na criação da tabela ou com instruções ALTER TABLE. Consulte a referência das 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 futura de estatísticas ao adicionar ou atualizar dados na tabela. O Delta Lake não aproveita as estatísticas de colunas não incluídas na lista atual de colunas de estatísticas.

Em Databricks Runtime 14.3 LTS e acima, se o senhor tiver alterado as propriedades da tabela ou mudado as colunas especificadas para as estatísticas, poderá acionar manualmente o recálculo das estatísticas de uma tabela Delta usando o seguinte comando:

SQL
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
nota

strings longos são truncados durante a coleta de estatísticas. O senhor pode optar por excluir colunas de strings longas da coleta de estatísticas, especialmente se as colunas não forem usadas com frequência para filtrar consultas.

O que é Z-ordering?

nota

A Databricks recomenda o uso de clustering líquido para todas as novas tabelas Delta. O senhor não pode usar ZORDER em combinação com o clustering líquido. Consulte Usar clustering líquido para tabelas Delta.

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

SQL
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írgulas. No entanto, a eficácia da localidade diminui a cada coluna extra. O Z-ordering em colunas que não têm estatísticas coletadas seria ineficaz e um desperdício de recursos. Isso ocorre porque a omissão de dados exige estatísticas locais da coluna, como mínimo, máximo e contagem. Você pode configurar a coleta de estatísticas em determinadas colunas reordenando as colunas no esquema ou pode aumentar o número de colunas nas quais coletar estatísticas.

nota
  • O Z-ordering não é idempotente , mas pretende ser uma operação incremental. Não é garantido que o tempo necessário para o Z-ordering seja reduzido em várias execuções. No entanto, se nenhum novo dado foi adicionado a uma partição que foi apenas Z-ordered, outro Z-ordering dessa partição não terá nenhum efeito.

  • O Z-Ordering visa produzir arquivos de dados equilibrados em relação ao número de tuplas, mas não necessariamente ao tamanho dos dados no disco.As duas medidas são frequentemente correlacionadas, mas pode haver situações em que esse não é o caso, levando a distorções na otimização dos tempos das tarefas.

    Por exemplo, se você ZORDER BY data e seus registros mais recentes forem todos muito mais amplos (por exemplo, matrizes ou valores de strings mais longas) do que os anteriores, espera-se que as durações de tarefa do job OPTIMIZE sejam distorcidas, bem como os tamanhos dos arquivos resultantes. Este é, no entanto, apenas um problema para o próprio comando OPTIMIZE; ele não deve ter qualquer impacto negativo nas consultas subsequentes.