KONWERTUJ NA RÓŻNICĘ

Dotyczy:sprawdź oznaczone jako tak Zaznaczone pole wyboru SQL usługi Databricks oznaczone jako tak Databricks Runtime

Konwertuje istniejącą tabelę Parquet na tabelę delty w miejscu. To polecenie wyświetla listę wszystkich plików w katalogu, tworzy dziennik transakcji usługi Delta Lake, który śledzi te pliki, i automatycznie wnioskuje schemat danych, odczytując stopki wszystkich plików Parquet. Proces konwersji zbiera statystyki w celu zwiększenia wydajności zapytań w przekonwertowanej tabeli delty. Jeśli podasz nazwę tabeli, magazyn metadanych zostanie również zaktualizowany, aby odzwierciedlić, że tabela jest teraz tabelą delty.

To polecenie obsługuje konwertowanie tabel Iceberg, których bazowy format pliku to Parquet. W tym przypadku konwerter generuje dziennik transakcji usługi Delta Lake na podstawie natywnego manifestu pliku, schematu i partycjonowania tabeli Iceberg.

Składni

CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]

Parametry

  • Nazwa_tabeli

    Opcjonalnie kwalifikowany identyfikator tabeli lub ścieżka do parquet katalogu plików lub iceberg . Nazwa nie może zawierać specyfikacji czasowej. W przypadku tabel góry lodowej można używać tylko ścieżek, ponieważ konwertowanie zarządzanych tabel góry lodowej nie jest obsługiwane.

  • BRAK STATYSTYK

    Pomiń zbieranie statystyk podczas procesu konwersji i szybciej zakończ konwersję. Po przekonwertowaniu tabeli na usługę Delta Lake można użyć OPTIMIZE ZORDER BY jej do reorganizacji układu danych i wygenerowania statystyk.

  • PARTYCJONOWANE WEDŁUG

    Podziel utworzoną tabelę na partycje według określonych kolumn. Gdy table_name jest ścieżką, PARTITIONED BY element jest wymagany dla danych partycjonowanych. table_name Jeśli element jest kwalifikowanym identyfikatorem tabeli, PARTITIONED BY klauzula jest opcjonalna, a specyfikacja partycji jest ładowana z magazynu metadanych. W obu przypadkach proces konwersji przerywa i zgłasza wyjątek, jeśli struktura katalogów nie jest zgodna z podaną lub załadowaną PARTITIONED BY specyfikacją.

    Uwaga

    W środowisku Databricks Runtime 11.1 lub nowszym PARTITIONED BY wymagany jest argument dla wszystkich partycjonowanych danych.

Przykłady

Uwaga

Nie trzeba podawać informacji o partycjonowaniu tabel lub tabel góry lodowej zarejestrowanych w magazynie metadanych.

CONVERT TO DELTA database_name.table_name; -- only for Parquet tables

CONVERT TO DELTA parquet.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`
  PARTITIONED BY (date DATE); -- if the table is partitioned

CONVERT TO DELTA iceberg.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`; -- uses Iceberg manifest for metadata

Zastrzeżenia

Każdy plik, który nie jest śledzony przez usługę Delta Lake, jest niewidoczny i można go usunąć po uruchomieniu polecenia VACUUM. Należy unikać aktualizowania lub dołączania plików danych podczas procesu konwersji. Po przekonwertowaniu tabeli upewnij się, że wszystkie zapisy przechodzą przez usługę Delta Lake.

Istnieje możliwość, że wiele tabel zewnętrznych współużytkuje ten sam bazowy katalog Parquet. W takim przypadku, jeśli uruchomisz CONVERT jedną z tabel zewnętrznych, nie będzie można uzyskać dostępu do innych tabel zewnętrznych, ponieważ ich katalog podstawowy został przekonwertowany z Parquet na usługę Delta Lake. Aby ponownie wykonać zapytanie lub zapisać w tych tabelach zewnętrznych, należy je również uruchomić CONVERT .

CONVERT Wypełnia informacje o katalogu, takie jak schemat i właściwości tabeli, do dziennika transakcji usługi Delta Lake. Jeśli źródłowy katalog został już przekonwertowany na usługę Delta Lake, a jego metadane różnią się od metadanych katalogu, convertMetastoreMetadataMismatchException zgłaszany jest błąd .

Jeśli podczas korzystania ze środowiska Databricks Runtime chcesz CONVERT zastąpić istniejące metadane w dzienniku transakcji usługi Delta Lake, ustaw konfigurację spark.databricks.delta.convert.metadataCheck.enabled SQL na wartość false.

Cofanie konwersji

Jeśli wykonano operacje usługi Delta Lake, takie jak DELETE lub OPTIMIZE , które mogą zmieniać pliki danych:

  1. Uruchom następujące polecenie w celu odzyskiwania pamięci:
VACUUM delta.`<path-to-table>` RETAIN 0 HOURS
  1. <path-to-table>/_delta_log Usuń katalog.