Condividi tramite


REPAIR TABLE

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì 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 segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 12.2 LTS e versioni successive, MSCK è facoltativo.

Parameters

  • table_name

    Nome del table. Se il table non può essere trovato, Azure Databricks genera un errore TABLE_OR_VIEW_NOT_FOUND.

  • ADD o DROP o SYNCPARTITIONS

    Si applica a:segno di spunta sì Databricks SQL segno di spunta sì 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. Eseguire MSCK 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