REPAIR TABLE
Dotyczy: Databricks SQL Databricks Runtime
To polecenie aktualizuje metadane tabeli delty do usługi wykazu aparatu Unity. W przypadku tabel innych niż delty naprawia partycje tabeli i aktualizuje magazyn metadanych Hive.
- Tabele różnicowe: po wykonaniu z tabelami delty przy użyciu argumentu
SYNC METADATA
to polecenie odczytuje dziennik różnicowy tabeli docelowej i aktualizuje informacje o metadanych do usługi wykazu aparatu Unity. - Tabele inne niż delty: po wykonaniu z tabelami innych niż delty to polecenie odzyskuje wszystkie partycje w katalogu tabeli innej niż delta i aktualizuje magazyn metadanych Hive.
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ługi Azure Databricks, wystąpi 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
PARTITIONED BY
klauzuli 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 odzyskania partycji jest użycie funkcji ALTER TABLE RECOVER PARTITIONS.
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 wypełnia przy następnym uzyskiwaniu 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 należą do żadnych partycji tabeli. FUNKCJA ADD jest argumentem domyślnym, jeśli nie określono żadnej innego opcji.
- Polecenie DROP usuwa wszystkie partycje z katalogu sesji, które mają nieistniejące lokalizacje w systemie plików.
- SYNC to kombinacja funkcji DROP i ADD.
**
SYNC METADATA
**Odczytuje dziennik różnicowy tabeli docelowej i aktualizuje informacje o metadanych w usłudze wykazu aparatu Unity. Aby uruchomić to polecenie, musisz mieć uprawnienia MODIFY i SELECT w tabeli docelowej oraz użycie nadrzędnego schematu i wykazu. To polecenie z tym argumentem zakończy się niepowodzeniem, jeśli tabela docelowa nie jest przechowywana w wykazie aparatu Unity.
Jeśli funkcja Delta UniForm jest włączona,
SYNC METADATA
wyzwala ręczną konwersję bieżących metadanych delty na metadane góry lodowej i synchronizuje najnowszą wersję platformy Iceberg dla punktu końcowego Wykazu góry lodowej aparatu Unity. Zobacz Używanie programu UniForm do odczytywania tabel delty z klientami góry lodowej.
Przykłady (tabele nienależące do usługi 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 wykazu aparatu Unity)
-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA