REPAIR TABLE

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Dieser Befehl aktualisiert Delta-Tabellenmetadaten auf den Unity Catalog-Dienst. Bei Nicht-Delta-Tabellen repariert es die Partitionen der Tabelle und aktualisiert den Hive-Metastore.

  • Delta-Tabellen: Wenn Sie Delta-Tabellen mithilfe des SYNC METADATA-Arguments ausführen, liest dieser Befehl das Delta-Protokoll der Zieltabelle und aktualisiert die Metadateninformationen für den Unity Catalog-Dienst.
  • Nicht-Delta-Tabellen: Wenn dieser Befehl mit Nicht-Delta-Tabellen ausgeführt wird, stellt er alle Partitionen im Verzeichnis einer Nicht-Delta-Tabelle wieder her und aktualisiert den Hive-Metastore.

Syntax

[ MSCK ] REPAIR TABLE table_name
{
    [ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}

Für: Häkchen gesetzt ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 12.1 und höher, MSCK ist optional.

Parameter

  • table_name

    Der Name der Tabelle. Wenn die Tabelle nicht gefunden werden kann, löst Azure Databricks den Fehler TABLE_OR_VIEW_NOT_FOUND aus.

  • ADD oder DROP oder SYNCPARTITIONS

    Gilt für:Häkchen gesetzt ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 10.0 und höher

    Beim Erstellen einer Nicht-Delta-Tabelle mit der PARTITIONED BY-Klausel werden Partitionen generiert und im Hive-Metastore registriert. Wenn Sie die partitionierte Tabelle jedoch aus vorhandenen Daten erstellen, werden die Partitionen nicht automatisch im Hive-Metastore registriert. Führen Sie MSCK REPAIR TABLE aus, um die Partitionen zu registrieren.

    Eine weitere Möglichkeit zum Wiederherstellen von Partitionen ist die Verwendung von ALTER TABLE RECOVER PARTITIONS.

    Wenn die Tabelle im Cache gespeichert ist, löscht der Befehl die zwischengespeicherten Daten der Tabelle und alle abhängigen Daten, die sich darauf beziehen. Der Cache füllt sich, wenn das nächste Mal auf die Tabelle oder die Abhängigkeiten zugegriffen wird.

    • ADD fügt dem Sitzungskatalog neue Partitionen für alle Unterordner im Basistabellenordner hinzu, die keiner Tabellenpartition angehören. ADD ist das Standardargument, wenn keine andere Option angegeben wird.
    • DROP löscht alle Partitionen aus dem Sitzungskatalog, die über nicht vorhandene Speicherorte im Dateisystem verfügen.
    • SYNC ist die Kombination von DROP und ADD.
  • ** SYNC METADATA**

    Liest das Delta-Protokoll der Zieltabelle und aktualisiert die Metadateninformationen im Unity Catalog-Dienst. Um diesen Befehl auszuführen, müssen Sie über MODIFY- und SELECT-Berechtigungen für die Zieltabelle und USAGE des übergeordneten Schemas und Katalogs verfügen. Dieser Befehl mit diesem Argument führt zu einem Fehler, wenn die Zieltabelle nicht in Unity Catalog gespeichert ist.

    Wenn Delta UniForm aktiviert ist, löst SYNC METADATA die manuelle Konvertierung der aktuellen Delta-Metadaten in Iceberg-Metadaten aus und synchronisiert die neueste Iceberg-Version für den Unity Catalog Iceberg-Endpunkt. Weitere Informationen finden Sie unter Universelles Format (UniForm) für die Kompatibilität von Iceberg mit Delta-Tabellen.

Beispiele (Nicht-Delta Lake-Tabellen)

-- 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

Beispiel (Unity Catalog-Tabelle)

-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA