Compartilhar via


REPAIR TABLE

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

Esse comando atualiza os metadados da tabela Delta para o serviço catálogo do Unity. Para tabelas não Delta, ele repara as partições da tabela e atualiza o metastore do Hive.

  • Tabelas delta: quando executado com tabelas Delta usando o SYNC METADATA argumento, este comando lê o log delta da tabela de destino e atualiza as informações de metadados para o serviço catálogo do Unity.
  • Tabelas não Delta: quando executado com tabelas não Delta, esse comando recupera todas as partições no diretório de uma tabela não Delta e atualiza o metastore do Hive.

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 Databricks SQL verificação marcada como sim Databricks Runtime 10.4 LTS e versões superiores

    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 ALTERAR TABELA DE RECUPERAÇÃO DE PARTIÇÕES.

    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 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 base da tabela 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**

    Lê o log delta da tabela de destino e atualiza as informações de metadados no serviço catálogo do Unity. Para executar esse comando, você deve ter privilégios MODIFY e SELECT na tabela de destino e USO do esquema pai e catálogo. Esse comando com esse argumento falhará se a tabela de destino não estiver armazenada no Catálogo do Unity.

    Se o Delta UniForm estiver habilitado, SYNC METADATA disparará a conversão manual dos metadados delta atuais em metadados do Iceberg e sincronizará a versão mais recente do Iceberg para o ponto de extremidade do Iceberg do Catálogo do Unity. Confira Usar o UniForm para ler tabelas Delta com clientes Iceberg.

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