Sdílet prostřednictvím


Co je Apache Iceberg v Azure Databricks?

Important

Tabulky Iceberg spravované katalogem Unity jsou k dispozici ve verzi Public Preview v Databricks Runtime 16.4 LTS a vyšší. Cizí tabulky icebergu jsou také ve verzi Public Preview v Databricks Runtime 16.4 LTS a vyšší.

Funkce Iceberg v3 jsou k dispozici v beta verzi v Databricks Runtime 17.3 a vyšší. Viz Použití funkcí Apache Iceberg v3.

Apache Iceberg je opensourcový formát tabulky pro analytické úlohy. Podporuje funkce, jako je vývoj schématu, časové cestování a skryté dělení. Stejně jako Delta Lake poskytuje Iceberg abstraktní vrstvu, která umožňuje transakce ACID na datech uložených v úložišti objektů. Azure Databricks podporuje tabulky Iceberg, které používají formát souboru Apache Parquet. Iceberg udržuje atomicitu a konzistenci zápisem nových souborů metadat pro každou změnu tabulky.

Katalog Iceberg je vrstva nejvyšší úrovně architektury tabulek Iceberg. Zpracovává operace, jako je vytváření, vyřazení a přejmenování tabulek. Její hlavní odpovědností je poskytnout aktuální metadata při načtení tabulky. Azure Databricks podporuje tabulky Iceberg spravované pomocí:

Všechny tabulky Iceberg v Azure Databricks se řídí otevřenou specifikací formátu tabulky Iceberg. Podívejte se na specifikaci tabulky Iceberg.

Vytváření tabulek Iceberg v katalogu Unity

Tabulky Iceberg vytvořené v Unity Catalogu jsou spravované tabulky Iceberg. Tyto tabulky můžete vytvořit pomocí:

Spravované tabulky Iceberg jsou plně integrované s funkcemi platformy Azure Databricks. Katalog Unity spravuje úlohy životního cyklu, jako je vypršení platnosti snímků a komprimace souborů v těchto tabulkách. Spravované tabulky Iceberg podporují také clustering s kapalinou, což zlepšuje výkon dotazů. Prediktivní optimalizace automatizuje tyto úlohy, aby se snížily náklady na úložiště a zvýšily rychlost dotazů. Databricks doporučuje ke čtení a zápisu do katalogu Unity používat klienty Iceberg 1.9.2 a vyšší.

Možnost číst tabulky Iceberg spravované jinými katalogy

Cizí tabulka Iceberg je spravována katalogem, který není součástí Katalogu Unity. Externí katalog ukládá aktuální metadata tabulky. Azure Databricks používá federaci Lakehouse k načtení metadat a čtení tabulky z úložiště objektů.

Cizí tabulky Iceberg jsou v Azure Databricks jen pro čtení a mají omezenou podporu platformy.

Přístup k tabulkám Iceberg pomocí externích systémů

Ke všem tabulkám Iceberg v katalogu Unity můžete přistupovat pomocí rozhraní API katalogu Iceberg REST. Toto otevřené rozhraní API podporuje operace čtení a zápisu z externích modulů Iceberg v různých jazycích a platformách. Viz Přístup k tabulkám Azure Databricks z klientů Apache Iceberg.

Katalog REST podporuje vydávání přihlašovacích údajů, které poskytují dočasné přihlašovací údaje externím strojům pro přístup k podkladovému úložišti. Další informace naleznete v tématu Přihlašovací údaje katalogu Unity pro přístup k externímu systému.

Omezení tabulek Iceberg

Následující omezení platí pro tabulky Iceberg v Azure Databricks a můžou se změnit:

  • Tabulky Iceberg podporují pouze formát souborů Apache Parquet.
  • Azure Databricks podporuje verze 1, 2 a 3 specifikace Iceberg.
    • Informace o omezeních specifických pro v3 najdete v tématu Omezení.
  • Výmaz pozice Iceberg v2 a výmaz na základě rovnosti nejsou podporovány. Místo toho Azure Databricks podporuje vektory mazání Iceberg v3 pro odstranění na úrovni řádků.
  • Větvení a označování se nepodporují. Pouze hlavní větev je přístupná při čtení cizích tabulek Iceberg.
  • Rozkládání:
    • Vývoj oddílů u spravovaných tabulek Iceberg je podporován pouze při interakci s externími moduly Iceberg.
    • Cizí tabulky Iceberg nepodporují vývoj oddílů.
    • Dělení podle BINARY typu se nepodporuje.
  • Následující datové typy se nepodporují:
    • UUID
    • Fixed(L)
    • TIME
    • Vnořené STRUCT s požadovanými poli
  • Spravované tabulky Iceberg nepodporují omezení primárního klíče ani cizího klíče.

Omezení spravovaných tabulek Iceberg

Pro spravované tabulky Iceberg platí následující omezení:

  • Filtry řádků a masky sloupců nejsou podporovány.
  • Vektorové vyhledávání není podporované.
  • Iceberg nepodporuje datové kanály změn. V důsledku toho se přírůstkové zpracování nepodporuje při čtení spravovaných tabulek Iceberg jako zdroje pro:
    • Materializovaná zobrazení a streamované tabulky
    • Profilace dat
    • Online tabulky
    • Lakebase
    • Klasifikace dat
  • Spravované tabulky Iceberg je možné vytvořit pouze v případě, že je povolená prediktivní optimalizace pro údržbu tabulek.
  • Následující vlastnosti tabulky spravuje katalog Unity a nejde je nastavit ručně:
    • write.location-provider.impl
    • write.data.path
    • write.metadata.path
    • write.format.default
    • write.delete.format.default
  • Kodek pro kompresi nepodporuje změnu komprese tabulky. Ve výchozím nastavení používají všechny tabulky Zstd.
  • Dělení podle výrazů (například years(), months(), days()hours(), , bucket()) není podporováno.

Omezení tabulek Iceberg cizích

Následující omezení platí zejména pro cizí tabulky Iceberg:

  • Podpora cestování v čase je dostupná jen pro snímky Icebergu, které byly dříve čteny v Azure Databricks (to znamená snímky, ve kterých byl proveden příkaz SELECT).
  • Použití transformačních funkcí bucketu pro particionování v Iceberg může snížit výkon dotazů při použití podmíněných filtrů.
  • Produkty vrstvení cloudového úložiště, jako je Amazon S3, nejsou integrované se zahraničními tabulkami Iceberg. Přístup k cizím tabulkám Iceberg v Azure Databricks může obnovit data archivovaná v nižších úrovních úložiště.
  • U clusterů v režimu vyhrazeného přístupu vyžadují REFRESH FOREIGN TABLE čtení a ALL PRIVILEGES operace na tabulkách Iceberg.