CONVERT TO DELTA
Dotyczy: Databricks SQL 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 wywnioskuje 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 góry lodowej, 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ładnia
CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]
Parametry
-
Opcjonalnie kwalifikowany identyfikator tabeli lub ścieżka do
parquet
katalogu plików lubiceberg
. Nazwa nie może zawierać specyfikacji czasowej ani specyfikacji opcji. 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 szybsze zakończenie konwersji. Po przekonwertowaniu tabeli na usługę Delta Lake można użyć
OPTIMIZE ZORDER BY
jej do reorganizacji układu danych i wygenerowania statystyk.-
Podziel utworzoną tabelę na partycje według określonych kolumn. Gdy
table_name
jest ścieżką,PARTITIONED BY
parametr jest wymagany dla danych partycjonowanych.table_name
Gdy 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
jest wymagany argument dla wszystkich danych partycjonowanych.
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
. Podczas procesu konwersji należy unikać aktualizowania lub dołączania plików danych. 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 bazowy został przekonwertowany z Parquet na usługę Delta Lake. Aby ponownie wykonać zapytanie lub zapisać w tych tabelach zewnętrznych, należy również uruchomić na nich polecenie 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 katalog źródłowy został już przekonwertowany na usługę Delta Lake, a jego metadane różnią się od metadanych wykazu, convertMetastoreMetadataMismatchException
zgłaszany jest wyjątek .
Jeśli chcesz zastąpić istniejące metadane w dzienniku transakcji usługi Delta Lake przy CONVERT
użyciu środowiska Databricks Runtime, ustaw konfigurację spark.databricks.delta.convert.metadataCheck.enabled
SQL na false.