REPAIR TABLE
Aplica-se a: Databricks SQL Databricks Runtime
Este comando repara ou modifica partições para tabelas que não sejam Delta Lake. Use a cláusula SYNC METADATA
com Delta Lake para atualizar o serviço de catálogo com base em metadados de tabela ou para gerar metadados do Iceberg para tabelas habilitadas para leituras do Iceberg.
A funcionalidade suportada difere entre o Unity Catalog e o metastore do Hive e se as tabelas são suportadas pelo Delta Lake.
Sintaxe
[ MSCK ] REPAIR TABLE table_name
{
[ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}
Para Databricks SQL Databricks Runtime 12.2 LTS e superior, MSCK
é opcional.
Parâmetros
-
O nome da tabela. Se a tabela não puder ser encontrada, o Azure Databricks gerará um erro de TABLE_OR_VIEW_NOT_FOUND .
ADD
ouDROP
ouSYNC
PARTITIONS
Aplica-se a: Databricks SQL Databricks Runtime 10.4 LTS e superior
Ao criar uma tabela não-Delta usando a
PARTITIONED BY
cláusula, 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. ExecuteMSCK 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.
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 possuir os 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. Consulte Usar 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 Unity Catalog)
-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA