OPTIMIZE
Aplica-se a: Databricks SQL Databricks Runtime
Otimiza o layout dos dados do Delta Lake. Opcionalmente, otimize um subconjunto de dados ou coloque dados por coluna. Se você não especificar a colocação e a tabela não estiver definida com clustering líquido, a otimização de empacotamento de compartimento será executada.
Sintaxe
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Nota
- A otimização de empacotamento de compartimentos é idempotente, o que significa que, se for executada duas vezes no mesmo conjunto de dados, a segunda execução não terá efeito. Ele visa produzir arquivos de dados equilibrados em relação ao seu tamanho no disco, mas não necessariamente o número de tuplas por arquivo. No entanto, as duas medidas estão mais frequentemente correlacionadas.
- Z-Ordering não é idempotente , mas pretende ser uma operação incremental. Não é garantido que o tempo necessário para Z-Ordering reduza em várias execuções. No entanto, se nenhum novo dado foi adicionado a uma partição que foi apenas Z-Ordered, outra Z-Ordering dessa partição não terá qualquer efeito. Ele 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.
Nota
Ao usar o Databricks Runtime, para controlar o tamanho do arquivo de saída, defina a configuraçãoSpark . 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
-
Identifica uma tabela Delta existente. O nome não deve incluir uma especificação temporal ou uma especificação de opções.
FULL
Aplica-se a: Databricks Runtime 16.0 e versões posteriores
Otimize toda a tabela, incluindo dados que podem ter sido agrupados anteriormente. Esta cláusula só pode ser especificada para tabelas que usam agrupamento líquido.
WHERE
Otimize o subconjunto de linhas correspondentes ao predicado de partição dado. Apenas filtros envolvendo atributos de chave de partição são suportados.
Não é possível usar essa cláusula em tabelas que usam clustering líquido.
ZORDER BY
Coloque as informações da coluna no mesmo conjunto de arquivos. A co-localidade é usada por algoritmos de pulo de dados do Delta Lake para reduzir drasticamente a quantidade de dados que precisam ser lidos. Você pode especificar várias colunas para
ZORDER BY
como uma lista separada por vírgula. No entanto, a eficácia da localidade diminui a cada coluna adicional.Não é possível 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, consulte OPTIMIZE
de arquivo de dados.