Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
SQL do Databricks
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 Sparkspark.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.
Importante
Quando você altera o codec de compactação de uma tabela usando a propriedade delta.parquet.compression.codec, os arquivos de dados existentes não são recompactados automaticamente. Para recompactar os dados existentes com o formato de compactação escolhido, execute OPTIMIZE table_name FULL (Databricks Runtime 16.0 e superior):
-- Change compression codec
ALTER TABLE table_name SET TBLPROPERTIES ('delta.parquet.compression.codec' = 'ZSTD');
-- Recompress all existing data files
OPTIMIZE table_name FULL;
Parâmetros
-
Identifica uma tabela do Delta existente. O nome não deve incluir uma especificação temporal ou especificação de opções.
FULLAplica-se a:
Databricks Runtime 16.0 e superiorReescreve todos os arquivos de dados na tabela. Use
OPTIMIZE table_name FULLpara:- Otimize toda a tabela, incluindo quaisquer dados que possam ter sido agrupados anteriormente (para tabelas que usam clustering líquido).
- Recompacte os arquivos de dados existentes ao alterar o codec de compactação da tabela usando a propriedade
delta.parquet.compression.codec.
WHEREOtimize 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 BYColocar 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 BYcomo 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;
> OPTIMIZE 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.