REPAIR TABLE
Dotyczy: Databricks SQL Databricks Runtime
To polecenie naprawia lub modyfikuje partycje dla tabel innych niż Delta Lake. Użyj klauzuli SYNC METADATA
z Delta Lake, aby zaktualizować usługę katalogową na podstawie metadanych tabeli lub wygenerować metadane dla Iceberg dla tabel obsługujących odczyty w formacie Iceberg.
Obsługiwane funkcje różnią się między katalogiem Unity a magazynem metadanych Hive oraz czy tabele są obsługiwane przez Delta Lake.
Składnia
[ MSCK ] REPAIR TABLE table_name
{
[ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}
W przypadku usługi Databricks SQL Databricks Runtime 12.2 LTS lub nowszej MSCK
jest opcjonalne.
Parametry
-
Nazwa tabeli. Jeśli nie można odnaleźć tabeli, usługa Azure Databricks zgłosi błąd TABLE_OR_VIEW_NOT_FOUND.
ADD
lub lubDROP
SYNC
PARTITIONS
Dotyczy: Databricks SQL Databricks Runtime 10.4 LTS i nowsze
Podczas tworzenia tabeli innej niż delta przy użyciu klauzuli
PARTITIONED BY
partycje są generowane i rejestrowane w magazynie metadanych Hive. Jeśli jednak tworzysz tabelę partycjonowaną na podstawie istniejących danych, partycje nie są automatycznie rejestrowane w magazynie metadanych Hive. Uruchom polecenieMSCK REPAIR TABLE
, aby zarejestrować partycje.Innym sposobem odzyskiwania partycji jest użycie ALTER TABLE ODZYSKIWANIE PARTYCJI.
Jeśli tabela jest buforowana, polecenie czyści buforowane dane tabeli i wszystkie zależności, które się do niej odwołują. Pamięć podręczna zostanie wypełniona przy następnym uzyskaniu dostępu do tabeli lub zależności.
- polecenie ADD dodaje nowe partycje do katalogu sesji dla wszystkich podfolderów w folderze tabeli podstawowej, które nie są przypisane do żadnej partycji tabeli. FUNKCJA ADD jest argumentem domyślnym, jeśli nie określono żadnej innego opcji.
- DROP polecenie usuwa wszystkie partycje z katalogu sesji, które mają nieistniejące lokalizacje w systemie plików.
- SYNC to kombinacja DROP i ADD.
SYNC METADATA
Tylko Delta Lake.
Odczytuje dziennik transakcji tabeli docelowej i aktualizuje informacje o metadanych w usłudze katalogu. Aby uruchomić to polecenie, musisz mieć uprawnienia MODIFY i SELECT w tabeli docelowej oraz uprawnienia USE SCHEMA i USE CATALOG w nadrzędnym schemacie i wykazie.
Ten argument działa z magazynem metadanych Hive w środowisku Databricks Runtime 16.1 lub nowszym. W przypadku tabel magazynu metadanych Hive musisz mieć uprawnienia USAGE i MODIFY.
Jeśli Delta UniForm jest włączona (wymaga Unity Catalog),
SYNC METADATA
wyzwala ręczną konwersję bieżących metadanych Delta do metadanych Iceberg i synchronizuje najnowszą wersję Iceberg dla punktu końcowego Iceberg w Unity Catalog. Zobacz Jak odczytywać tabele Delta przy użyciu klientów Iceberg.
Przykłady (tabele niebędące tabelami 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
Przykład (tabela Unity Catalog)
-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA