Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Databricks SQL
Databricks Runtime
Mit diesem Befehl werden Partitionen für Tabellen repariert oder geändert.
Verwenden Sie die SYNC METADATA
Klausel mit Delta Lake, um den Katalogdienst basierend auf Tabellenmetadaten zu aktualisieren oder Apache Iceberg-Metadaten für Tabellen zu generieren, die für Iceberg-Lesevorgänge aktiviert sind. Verwenden Sie SYNC METADATA
nicht, wenn Sie Partitionen für Nicht-Delta-Lake-Tabellen ändern.
Die unterstützte Funktionalität hängt davon ab, ob Tabellen im Unity-Katalog oder im Hive-Metaspeicher registriert sind und ob Tabellen vom Delta Lake unterstützt werden.
Syntax
[ MSCK ] REPAIR TABLE table_name
{
[ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}
Für Databricks SQL
Databricks Runtime 12.2 LTS und höher,
MSCK
ist optional
Parameter
-
Der Name der Tabelle. Wenn die Tabelle nicht gefunden werden kann, löst Azure Databricks den Fehler TABLE_OR_VIEW_NOT_FOUND aus.
ADD
oderDROP
oderSYNC
PARTITIONS
Gilt für:
Databricks SQL
Databricks Runtime 10.4 LTS 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 SieMSCK REPAIR TABLE
aus, um die Partitionen zu registrieren.Eine weitere Möglichkeit zum Wiederherstellen von Partitionen ist die Verwendung ALTER TABLE von RECOVER PARTITIONS.
Wenn die Tabelle zwischengespeichert wird, löscht der Befehl die zwischengespeicherten Daten der Tabelle und alle Nachfolger, die darauf verweisen. Der Cache füllt sich, wenn das nächste Mal auf die Tabelle oder die Abhängigkeiten zugegriffen wird.
- Der Befehl ADD fügt dem Sitzungskatalog neue Partitionen für alle Unterordner im Basistabellenordner hinzu, die nicht zu Tabellenpartitionen gehö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 aus DROP und ADD.
SYNC METADATA
Nur Delta Lake.
Wenn die Konfiguration
spark.databricks.delta.catalog.update.enabled
auftrue
festgelegt ist, werden Metadatenaktualisierungen der Zieltabelle automatisch mit dem Katalogdienst synchronisiert. Andernfalls ist möglicherweise eine manuelle Synchronisierung mitREPAIR TABLE table_name SYNC METADATA
erforderlich.Liest das Transaktionsprotokoll der Zieltabelle und aktualisiert die Metadateninformationen im Katalogdienst. Um diesen Befehl auszuführen, müssen Sie über MODIFY und SELECT Berechtigungen für die Zieltabelle und USE SCHEMAUSE CATALOG Berechtigungen für das übergeordnete Schema und den Katalog verfügen.
Dieses Argument funktioniert mit dem Hive-Metaspeicher in Databricks Runtime 16.1 und höher. Für Hive-Metastore-Tabellen benötigen Sie die Berechtigungen USAGE und MODIFY.
Wenn Delta UniForm aktiviert ist (erfordert Unity-Katalog),
SYNC METADATA
löst manuelle Konvertierung aktueller Delta-Metadaten in Iceberg-Metadaten aus und synchronisiert die neueste Iceberg-Version für den Unity Catalog Iceberg-Endpunkt. Siehe Lesen von Delta-Tabellen mit Iceberg-Clients.Sie können
REPAIR TABLE table_name SYNC METADATA
verwenden, um das Unity Catalog-Berechtigungsmodell auf flache Klone anzuwenden, die Sie aus einem Fremdkatalog lesen, der mit dem Hive-Metastore-Verbund erstellt wurde. Weitere Informationen finden Sie unter Arbeiten mit flachen Klonen.
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