Compartilhar via


REPAIR TABLE

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

Esse comando repara ou modifica partições para tabelas.

Use a cláusula SYNC METADATA com o Delta Lake para atualizar o serviço de catálogo com base em metadados de tabela ou para gerar metadados do Apache Iceberg para tabelas habilitadas para leitura com Iceberg. Não use SYNC METADATA quando você estiver modificando partições para tabelas não Delta Lake.

A funcionalidade com suporte depende se as tabelas são registradas no Catálogo do Unity ou no metastore do Hive e se as tabelas são apoiadas pelo Delta Lake.

Sintaxe

[ MSCK ] REPAIR TABLE table_name
{
    [ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}

Para verificação marcada como sim Databricks SQL verificação marcada como sim Databricks Runtime 12.2 LTS e versões superiores, MSCK é opcional.

Parâmetros

  • table_name

    O nome da tabela. Se a tabela não puder ser encontrada, o Azure Databricks gerará um erro TABLE_OR_VIEW_NOT_FOUND.

  • ADD ou DROP ou SYNCPARTITIONS

    Aplica-se a:verificação marcada como sim SQL do Databricks verificação marcada como sim Databricks Runtime 10.4 LTS e superior

    Ao criar uma tabela não Delta usando uma cláusula PARTITIONED BY, as partições são geradas e registradas no metastore do Hive. No entanto, se você criar a tabela particionada usando dados existentes, as partições não serão registradas automaticamente no metastore do Hive. Execute MSCK REPAIR TABLE para registrar as partições.

    Outra maneira de recuperar partições é usar ALTER TABLE RECOVER PARTITIONS.

    Se a tabela for armazenada em cache, o comando limpará os dados armazenados em cache da tabela e todos os dependentes que se referem a ela. O cache será preenchido na próxima vez em que a tabela ou os dependentes forem acessados.

    • O comando ADD adiciona novas partições ao catálogo de sessão para todas as subpastas na pasta de tabela base que não pertencem a nenhuma partição de tabela. ADD será o argumento padrão se nenhuma outra opção for especificada.
    • O comando DROP descarta todas as partições do catálogo de sessão que têm locais não existentes no sistema de arquivos.
    • SYNC é a combinação de DROP e ADD.
  • SYNC METADATA

    Somente o Delta Lake.

    Se a configuração spark.databricks.delta.catalog.update.enabled estiver definida como true, as atualizações de metadados da tabela de destino serão sincronizadas automaticamente com o serviço de catálogo. Caso contrário, uma sincronização manual usando REPAIR TABLE table_name SYNC METADATA pode ser necessária.

    Lê o log de transações da tabela de destino e atualiza as informações de metadados no serviço de catálogo. Para executar esse comando, você deve ter os privilégios MODIFY e SELECT na tabela de destino e privilégios USE SCHEMA e USE CATALOG no esquema e catálogo pai.

    Esse argumento funciona com o metastore do Hive no Databricks Runtime 16.1 e superior. Quanto às tabelas metastore do Hive, você precisa ter privilégios USAGE e MODIFY.

    Se o Delta UniForm estiver habilitado (requer Unity Catalog), SYNC METADATA aciona a conversão manual dos metadados Delta atuais em metadados Iceberg e sincroniza a versão mais recente do Iceberg para o ponto de extremidade Iceberg do Unity Catalog. Confira Ler tabelas Delta com clientes do Iceberg.

    Você pode usar REPAIR TABLE table_name SYNC METADATA para aplicar o modelo de permissões do Catálogo do Unity aos clones superficiais que você está lendo de um catálogo estrangeiro que foi criado usando a federação de metastore do Hive. Consulte Trabalhando com clones superficiais.

Exemplos (tabelas não Delta Lake)

-- create a partitioned table from existing data /tmp/namesAndAges.parquet
> CREATE TABLE t1 (name STRING, age INT) USING parquet PARTITIONED BY (age)
  LOCATION "/tmp/namesAndAges.parquet";

-- SELECT * FROM t1 does not return results
> SELECT * FROM t1;

-- run MSCK REPAIR TABLE to recovers all the partitions
> MSCK REPAIR TABLE t1;

-- SELECT * FROM t1 returns results
> SELECT * FROM t1;
    name age
  ------- ---
  Michael  20
   Justin  19
     Andy  30

Exemplo (tabela do Catálogo do Unity)

-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA