Partilhar via


REPAIR TABLE

Aplica-se a:selecionado sim Databricks SQL selecionado sim Databricks Runtime

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

Utilize a cláusula SYNC METADATA com o Delta Lake para atualizar o serviço de catálogo com base nos metadados da tabela ou para gerar metadados do Apache Iceberg para tabelas capazes de realizar leituras no Iceberg. Não use SYNC METADATA quando estiver modificando partições para tabelas que não sejam Delta Lake.

A funcionalidade suportada depende se as tabelas estão registradas no Unity Catalog ou no metastore do Hive e se as tabelas são apoiadas pelo Delta Lake.

Syntax

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

Para marcar sim Databricks SQL marcar sim Databricks Runtime 12.2 LTS e superior, MSCK é opcional.

Parameters

  • 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:marcado como sim Databricks SQL marcado como sim Databricks Runtime 10.4 LTS e versões superiores

    Ao criar uma tabela não-Delta usando a cláusula PARTITIONED BY, as partições são geradas e registradas no metastore do Hive. No entanto, se você criar a tabela particionada a partir de 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 estiver armazenada em cache, o comando limpará os dados armazenados em cache da tabela e todos os dependentes que se referem a ela. O cache é preenchido na próxima vez que a tabela ou os dependentes forem acessados.

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

    Apenas Lago Delta.

    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, poderá ser necessária uma sincronização REPAIR TABLE table_name SYNC METADATA manual.

    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 privilégios MODIFY e SELECT na tabela de destino e privilégios USE SCHEMA e USE CATALOG no esquema pai e no catálogo.

    Esse argumento funciona com o metastore do Hive no Databricks Runtime 16.1 e superior. Para tabelas de metastore do Hive, é necessário ter privilégios USAGE e MODIFY.

    Se o Delta UniForm estiver habilitado (requer o Unity Catalog), SYNC METADATA acionará a conversão manual dos metadados Delta atuais para metadados do Iceberg e sincronizará a versão mais recente do Iceberg para o endpoint Iceberg do Unity Catalog. Veja Ler tabelas Delta com clientes Iceberg.

    Você pode usar REPAIR TABLE table_name SYNC METADATA para aplicar o modelo de permissões do Unity Catalog a clones superficiais que você está a ler 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 Unity Catalog)

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