REPAIR TABLE
Si applica a: Databricks SQL
Databricks Runtime
Questo comando ripristina o modifica le partizioni per le tabelle.
Usare la clausola SYNC METADATA
con Delta Lake per aggiornare il servizio di catalogo in base ai metadati della tabella o per generare metadati Iceberg per le tabelle abilitate per le letture di Iceberg. Non usare SYNC METADATA
quando si modificano le partizioni per le tabelle non Delta Lake.
La funzionalità supportata dipende dal fatto che le tabelle siano registrate in Unity Catalog o nel metastore Hive e che le tabelle siano supportate da Delta Lake.
Sintassi
[ MSCK ] REPAIR TABLE table_name
{
[ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}
Per Databricks SQL
Databricks Runtime 12.2 LTS e versioni successive,
MSCK
è facoltativo.
Parametri
-
Nome della tabella. Se la tabella non è stata trovata, Azure Databricks genera un errore di TABLE_OR_VIEW_NOT_FOUND.
ADD
oDROP
oSYNC
PARTITIONS
Si applica a:
Databricks SQL
Databricks Runtime 10.4 LTS e versioni successive
Quando si crea una tabella non Delta usando la clausola
PARTITIONED BY
, le partizioni vengono generate e registrate nel metastore Hive. Tuttavia, se si crea la tabella partizionata da dati esistenti, le partizioni non vengono registrate automaticamente nel metastore Hive. EseguireMSCK REPAIR TABLE
per registrare le partizioni.Un altro modo per ripristinare le partizioni consiste nell'usare ALTER TABLE RECOVER PARTITIONS.
Se la tabella viene memorizzata nella cache, il comando cancella i dati memorizzati nella cache della tabella e tutti i dipendenti che vi fanno riferimento. La cache si riempie la volta successiva in cui si accede alla tabella o ai suoi oggetti dipendenti.
- comando ADD aggiunge nuove partizioni al catalogo delle sessioni per tutte le sottocartelle nella cartella della tabella di base che non appartengono ad alcuna partizione di tabella. ADD è l'argomento predefinito se non viene specificata alcuna altra opzione.
- comando DROP elimina tutte le partizioni dal catalogo di sessioni con percorsi non esistenti nel file system.
- SYNC è la combinazione di DROP e ADD.
SYNC METADATA
Solo per Delta Lake.
Legge il log delle transazioni della tabella di destinazione e aggiorna le informazioni sui metadati nel servizio catalogo. Per eseguire questo comando, è necessario disporre di privilegi MODIFY e SELECT per la tabella di destinazione, USE SCHEMA e USE CATALOG privilegi per lo schema e il catalogo padre.
Questo argomento funziona con il metastore Hive su Databricks Runtime dalla versione 16.1 in poi. Per le tabelle metastore Hive, è necessario disporre dei privilegi USAGE e MODIFY.
Se Delta UniForm è abilitato (richiede Unity Catalog),
SYNC METADATA
attiva la conversione manuale dei metadati Delta correnti nei metadati iceberg e sincronizza la versione più recente di Iceberg per l'endpoint di Unity Catalog Iceberg. Consulta Leggi le tabelle Delta con i client Iceberg.È possibile usare
REPAIR TABLE table_name SYNC METADATA
per applicare il modello di autorizzazioni del catalogo Unity ai cloni superficiali letti da un catalogo esterno creato usando la federazione del metastore Hive. Vedere Uso di cloni superficiali.
Esempi (tabelle che non sono 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
Esempio (tabella del catalogo Unity)
-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA