CONVERT TO DELTA
Platí pro: Databricks SQL Databricks Runtime
Převede existující tabulku Parquet na místní tabulku Delta. Tento příkaz zobrazí seznam všech souborů v adresáři, vytvoří transakční protokol Delta Lake, který tyto soubory sleduje, a automaticky odvodí schéma dat čtením zápatí všech souborů Parquet. Proces převodu shromažďuje statistiky za účelem zlepšení výkonu dotazů u převedené tabulky Delta. Pokud zadáte název tabulky, metastor se také aktualizuje tak, aby odrážel, že tabulka je teď tabulkou Delta.
Tento příkaz podporuje převod tabulek Iceberg, jejichž základní formát souboru je Parquet. V tomto případě převaděč generuje protokol transakcí Delta Lake na základě nativního manifestu souboru tabulky Iceberg, schématu a informací o dělení.
Syntaxe
CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]
Parametry
-
Volitelně kvalifikovaný identifikátor tabulky nebo cesta k
parquet
adresáři souborů.iceberg
Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností. U tabulek Iceberg můžete použít pouze cesty, protože převod spravovaných tabulek ledu není podporován. ŽÁDNÉ STATISTIKY
Obejití shromažďování statistik během procesu převodu a rychlejší dokončení převodu Po převodu tabulky na Delta Lake můžete
OPTIMIZE ZORDER BY
změnit uspořádání rozložení dat a vygenerovat statistiky.-
Rozdělte vytvořenou tabulku podle zadaných sloupců. Pokud
table_name
se jedná o cestu, vyžaduje sePARTITIONED BY
pro dělená data. Pokud je kvalifikovanýtable_name
identifikátor tabulky,PARTITIONED BY
klauzule je volitelná a specifikace oddílu se načte z metastoru. V obou přístupech proces převodu přeruší a vyvolá výjimku, pokud adresářová struktura neodpovídá zadané nebo načtenéPARTITIONED BY
specifikaci.Poznámka:
V Databricks Runtime 11.1 a níže
PARTITIONED BY
je povinný argument pro všechna dělená data.
Příklady
Poznámka:
Není nutné zadávat informace o dělení tabulek nebo tabulek Iceberg registrovaných do metastoru.
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
Upozornění
Jakýkoli soubor, který Delta Lake nesleduje, je neviditelný a lze jej odstranit při spuštění VACUUM
. Během procesu převodu byste se měli vyhnout aktualizaci nebo připojování datových souborů. Po převodu tabulky se ujistěte, že všechny zápisy procházejí Delta Lake.
Je možné, že několik externích tabulek sdílí stejný základní adresář Parquet. Pokud v tomto případě spustíte CONVERT
jednu z externích tabulek, nebudete mít přístup k ostatním externím tabulkám, protože jejich základní adresář byl převeden z Parquet na Delta Lake. Pokud chcete do těchto externích tabulek zadávat dotazy nebo je znovu zapisovat, musíte je také spustit CONVERT
.
CONVERT
Naplní informace katalogu, jako jsou vlastnosti schématu a tabulky, do transakčního protokolu Delta Lake. Pokud už byl podkladový adresář převeden na Delta Lake a jeho metadata se liší od metadat katalogu, convertMetastoreMetadataMismatchException
vyvolá se vyvolá.
Pokud používáte Databricks Runtime, pokud chcete CONVERT
přepsat existující metadata v transakčním protokolu Delta Lake, nastavte konfiguraci spark.databricks.delta.convert.metadataCheck.enabled
SQL na false.