Udostępnij za pośrednictwem


CONVERT TO DELTA

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Konwertuje istniejącą tabelę Parquet na tabelę Delta na bieżąco. 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 Iceberg, których bazowy format pliku to Parquet. W tym przypadku konwerter generuje dziennik transakcji Delta Lake na podstawie natywnego manifestu plików, informacji o schemacie i partycjonowaniu tabeli Iceberg.

Składnia

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

Parametry

  • table_name

    Opcjonalnie określony identyfikator tabeli lub ścieżka do katalogu parquet lub iceberg. Nazwa nie może zawierać specyfikacji czasowej ani specyfikacji opcji. W przypadku tabel Iceberg można używać tylko ścieżek, ponieważ konwertowanie zarządzanych tabel Iceberg 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, aby zreorganizować układ danych i wygenerować statystyki.

  • PARTYCJONOWANE PRZEZ

    Podziel utworzoną tabelę na partycje według określonych kolumn. Gdy table_name jest ścieżką, PARTITIONED BY parametr jest wymagany dla danych partycjonowanych. Gdy table_name jest kwalifikowanym identyfikatorem tabeli, klauzula PARTITIONED BY 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 Iceberg lub tabel 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 korzysta z tego samego bazowego katalogu Parquet. W takim przypadku, jeśli uruchomisz CONVERT w jednej 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 uruchomić na nich również 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 bazowy został już przekonwertowany na Delta Lake, a jego metadane różnią się od metadanych wykazu, zostaje zgłoszony błąd convertMetastoreMetadataMismatchException.

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