REPAIR TABLE
Si applica a: Databricks SQL
Databricks Runtime
Questo comando ripristina o modifica le partizioni per sistemi diversi da Delta Lake tables. Usa la clausola SYNC METADATA
con Delta Lake per update il servizio catalog basato sui metadati table, oppure per generate i metadati Iceberg per tables abilitati per le letture di Iceberg.
Le funzionalità supportate differiscono tra Unity Catalog e il metastore Hive e se tables sono supportati 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.
Parameters
-
Nome del table. Se il table non può essere trovato, Azure Databricks genera un errore 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 un table non Delta usando la clausola
PARTITIONED BY
, le partizioni vengono generate e registrate nel metastore Hive. Tuttavia, se si crea il table partizionato 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 table viene memorizzata nella cache, il comando cancella i dati memorizzati nella cache del tablee tutte le dipendenze che si riferiscono ad esso. La cache si riempie la prossima volta che si accede al table o ai suoi dipendenti.
- comando ADD aggiunge nuove partizioni alla sessione catalog per tutte le sottocartelle nella cartella table di base che non appartengono ad alcuna partizione table. ADD è l'argomento predefinito se non viene specificata alcuna altra opzione.
- Il comando DROP elimina tutte le partizioni dalla sessione catalog che hanno percorsi inesistenti nel file system.
- SYNC è la combinazione di DROP e ADD.
SYNC METADATA
Solo per Delta Lake.
Legge il log delle transazioni del destinatario table e aggiorna le informazioni sui metadati nel servizio catalog. Per eseguire questo comando, è necessario disporre dei privilegi MODIFY e SELECT per il table di destinazione, e dei privilegi USE SCHEMA e USE CATALOG sul schema padre e sul catalog.
Questo argomento funziona con il metastore Hive su Databricks Runtime dalla versione 16.1 in poi. Per il metastore Hive tables, devi avere i privilegi di utilizzo e modifica.
Se Delta UniForm è abilitato (richiede Unity Catalog),
SYNC METADATA
attiva la conversione manuale dei metadati Delta correnti in metadati Iceberg e sincronizza la versione più recente di Iceberg per l'endpoint Unity Catalog Iceberg. Visualizza Leggi Delta tables con i clienti Iceberg.
Esempi (non il Delta Lake tables)
-- 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 (Unity Catalogtable)
-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA