Sdílet prostřednictvím


CONVERT TO DELTA

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano 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

  • table_name

    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.

  • DĚLENÉ PODLE

    Rozdělte vytvořenou tabulku podle zadaných sloupců. Pokud table_name se jedná o cestu, vyžaduje se PARTITIONED 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.