Udostępnij za pośrednictwem


REPAIR TABLE

Dotyczy:zaznaczenie tak Databricks SQL zaznaczenie tak Databricks Runtime

To polecenie naprawia lub modyfikuje partycje dla tabel.

SYNC METADATA Użyj klauzuli z usługą Delta Lake, aby zaktualizować usługę wykazu na podstawie metadanych tabeli lub wygenerować metadane platformy Apache Iceberg dla tabel z włączoną obsługą odczytów w górach lodowych. Nie należy używać SYNC METADATA podczas modyfikowania partycji dla tabel nienależących do usługi Delta Lake.

Obsługiwana funkcjonalność zależy od tego, czy tabele są zarejestrowane w Unity Catalog lub w metastore Hive oraz czy są oparte na Delta Lake.

Składnia

[ MSCK ] REPAIR TABLE table_name
{
    [ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}

Aby sprawdzić zaznaczenie "tak" w Databricks SQL i Databricks Runtime 12.2 LTS i nowszych, check marked yes jest opcjonalny.

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:zaznaczone jako tak Databricks SQL zaznaczone jako tak Databricks Runtime 10.4 LTS i nowszych

    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 na odzyskanie partycji jest użycie ALTER TABLE funkcji ODZYSKAJ PARTYCJE.

    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 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 jest kombinacją DROP i ADD.
  • SYNC METADATA

    Tylko Delta Lake.

    Jeśli konfiguracja spark.databricks.delta.catalog.update.enabled jest ustawiona na true, aktualizacje metadanych tabeli docelowej są automatycznie synchronizowane z usługą wykazu. W przeciwnym razie może być wymagana ręczna synchronizacja za pomocą REPAIR TABLE table_name SYNC METADATA.

    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 Odczytywanie tabel Delta przez klientów Iceberg.

    Można użyć REPAIR TABLE table_name SYNC METADATA, aby zastosować model uprawnień Unity Catalog do płytkich klonów odczytywanych z obcego katalogu, który został utworzony przy użyciu federacji metastore Hive. Zobacz Praca z płytkimi klonami.

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