Udostępnij za pośrednictwem


REPAIR TABLE

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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 zaznacz pole wyboru oznaczone jako tak usługi Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 12.2 LTS lub nowszej MSCK jest opcjonalne.

Parametry

  • table_name

    Nazwa tabeli. Jeśli nie można odnaleźć tabeli usługi Azure Databricks, wystąpi błąd TABLE_OR_VIEW_NOT_FOUND .

  • ADDlub lub DROPSYNCPARTITIONS

    Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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 polecenie MSCK 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