Compartilhar via


OPTIMIZE

Aplica-se a: marca de seleção positiva SQL do Databricks marca de seleção positiva Runtime do Databricks

Otimiza o layout dos dados do Delta Lake. Opcionalmente, otimize um subconjunto de dados ou coloque os dados por coluna. Se você não especificar a colocação e a tabela não for definida com clustering líquido, a otimização de empacotamento em compartimento será executada.

Sintaxe

OPTIMIZE table_name [FULL] [WHERE predicate]
  [ZORDER BY (col_name1 [, ...] ) ]

Observação

  • A otimização de empacotamento de compartimentos é idempotente, o que significa que, se ela for executada duas vezes no mesmo conjunto de dados, a segunda não terá nenhum efeito. Ela visa a produzir arquivos de dados balanceados de forma equilibrada em relação ao seu tamanho no disco, mas não necessariamente ao número de tuplas por arquivo. No entanto, as duas medidas são correlacionadas com mais frequência.
  • A Ordenação Z não é idempotente, mas visa ser uma operação incremental. Não há garantia de que o tempo necessário à Ordenação Z seja reduzido em várias execuções. No entanto, se nenhum dado novo tiver sido adicionado a uma partição que acabou de sofreu Ordenação Z, outra Ordenação Z dessa partição não terá efeito. O objetivo dessa medida é produzir arquivos de dados balanceados de forma equilibrada em relação ao número de tuplas, mas não necessariamente ao tamanho dos dados no disco. As duas medidas são correlacionadas com mais frequência, mas pode haver situações em que esse não é o caso, levando à distorção nos tempos de tarefa de otimização.

Observação

Ao usar o Databricks Runtime, para controlar o tamanho do arquivo de saída, defina a Configuração do Spark spark.databricks.delta.optimize.maxFileSize. O valor padrão é 1073741824, que define o tamanho como 1 GB. A especificação do valor 104857600 define o tamanho do arquivo como 100 MB.

Parâmetros

  • table_name

    Identifica uma tabela do Delta existente. O nome não deve incluir uma especificação temporal ou especificação de opções.

  • FULL

    Aplica-se a: marca de seleção positiva Databricks Runtime 16.0 e posterior

    Otimize toda a tabela, incluindo dados que podem ter sido agrupados anteriormente. Essa cláusula só pode ser especificada para tabelas que usam clustering líquido.

  • WHERE

    Otimize o subconjunto de linhas correspondente ao predicado de partição determinado. Há suporte apenas para filtros que envolvam atributos de chave de partição.

    Você não pode usar essa cláusula em tabelas que usam clustering líquido.

  • ZORDER BY

    Colocar as informações da coluna no mesmo conjunto de arquivos. A colocalidade é usada por algoritmos que ignoram dados do Delta Lake a fim de reduzir significativamente o volume de dados que precisam ser lidos. Você pode especificar várias colunas para ZORDER BY como lista separada por vírgulas. No entanto, a eficácia da localidade diminui a cada coluna adicional.

    Você não pode usar essa cláusula em tabelas que usam clustering líquido.

Exemplos

> OPTIMIZE events;

> OPTIMZIE events FULL;

> OPTIMIZE events WHERE date >= '2017-01-01';

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

Para obter mais informações sobre o comando OPTIMIZE, confira Otimizar o layout do arquivo de dados.