Partilhar via


VACUUM

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime

Remova arquivos não utilizados de um diretório de tabela.

Nota

Esse comando funciona de forma diferente dependendo se você está trabalhando em uma tabela Delta ou Apache Spark.

Fazer a limpeza de uma tabela Delta

Aspirar recursivamente diretórios associados à tabela Delta. Para obter detalhes completos e limitações, consulte Remover arquivos de dados não utilizados com vácuo.

VACUUM remove todos os arquivos do diretório da tabela que não são gerenciados pela Delta, bem como os arquivos de dados que não estão mais no estado mais recente do log de transações da tabela e são mais antigos do que um limite de retenção. VACUUM ignorará todos os diretórios que começam com um sublinhado (_), que inclui o _delta_log. Particionar sua tabela em uma coluna que começa com um sublinhado é uma exceção a essa regra; VACUUM verifica todas as partições válidas incluídas na tabela Delta de destino. Os arquivos de dados da tabela Delta são excluídos de acordo com o tempo em que foram removidos logicamente do log de transações da Delta mais as horas de retenção, não seus carimbos de data/hora de modificação no sistema de armazenamento. O limiar predefinido é 7 dias.

Em tabelas Delta, o Azure Databricks não aciona VACUUM operações automaticamente.

Se você executar VACUUM em uma tabela Delta, perderá a capacidade de viajar no tempo de volta para uma versão anterior ao período de retenção de dados especificado.

Aviso

É recomendável definir um intervalo de retenção de pelo menos 7 dias, porque instantâneos antigos e arquivos não confirmados ainda podem estar em uso por leitores ou gravadores simultâneos na tabela. Se VACUUM limpar arquivos ativos, leitores simultâneos podem falhar ou, pior, tabelas podem ser corrompidas quando VACUUM exclui arquivos que ainda não foram confirmados. Tem de escolher um intervalo mais longo do que a transação simultânea de execução prolongada e o período mais longo em que qualquer fluxo pode ficar aquém da atualização mais recente para a tabela.

Delta Lake tem uma verificação de segurança para evitar que você execute um comando perigoso VACUUM . No Databricks Runtime, você tem certeza de que não há operações sendo executadas nesta tabela que levem mais tempo do que o intervalo de retenção que você planeja especificar, você pode desativar essa verificação de segurança definindo a propriedade spark.databricks.delta.retentionDurationCheck.enabled de configuração do Spark como false.

VACUUM table_name { { FULL | LITE } |  RETAIN num HOURS | DRY RUN } [...]

No Databricks Runtime 16.0 e versões anterioresRETAIN num HOURS devem preceder DRY RUN na sintaxe.

Importante

A janela de retenção para o comando VACUUM é determinada pela propriedade delta.deletedFileRetentionDuration table, cujo padrão é 7 dias. Isso significa que VACUUM remove arquivos de dados que não são mais referenciados por uma versão de tabela Delta nos últimos 7 dias. Para reter dados por um período mais longo, como para dar suporte a viagens no tempo por durações mais longas, defina esta propriedade de tabela para um valor mais alto. O exemplo a seguir mostra a definição desse limite para 30 dias:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

Parâmetros

  • table_name

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

  • RETAIN num HOURS

    O limiar de retenção.

  • DRY RUN

    Retornar uma lista de até 1000 arquivos a serem excluídos.

  • FULL ou LITE

    Aplica-se a:marca de verificação sim Databricks SQL marca de verificação sim Databricks Runtime 16.1 e versões posteriores

    FULL executa a operação de vácuo no modo completo. Isso exclui arquivos de dados fora da duração da retenção e todos os arquivos no diretório da tabela não referenciados pela tabela.

    LITE executa a operação de vácuo em modo Lite. Em vez de localizar todos os arquivos no diretório da tabela, o VACUUM usa o log de transações Delta para identificar e remover arquivos que não são mais referenciados por nenhuma versão da tabela dentro da duração da retenção. Se VACUUM LITE não puder ser concluída porque o log Delta foi removido, uma exceção DELTA_CANNOT_VACUUM_LITE será gerada.

    O padrão é FULL.

Aspirar uma mesa não Delta

Aspira recursivamente diretórios associados à tabela não-Delta e remove arquivos não confirmados anteriores a um limite de retenção. O limiar predefinido é 7 dias.

Em tabelas não Delta, o Azure Databricks aciona automaticamente as operações à medida que os VACUUM dados são gravados.

Sintaxe

VACUUM table_name [RETAIN num HOURS]

Parâmetros

  • table_name

    Identifica uma tabela existente por nome ou caminho.

  • RETAIN num HOURS

    O limiar de retenção.