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 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 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ługa Azure Databricks zgłosi 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 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 polecenie MSCK 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