Spravované tabulky Katalogu Unity pro Delta Lake a Apache Iceberg

Spravované tabulky v Unity Catalogu jsou v Azure Databricks výchozím a doporučeným typem tabulek pro Delta Lake a Apache Iceberg. Katalog Unity spravuje všechny zodpovědnosti za čtení, zápis, úložiště a optimalizaci. Viz Převod externích nebo cizích tabulek Delta Lake do spravovaných tabulek Katalogu Unity.

Datové soubory pro spravované tabulky jsou uloženy ve schématu nebo katalogu, které obsahují. Viz Určete spravované umístění úložiště v katalogu Unity.

Databricks doporučuje používat spravované tabulky k využití následujících výhod ve srovnání s externími a cizími tabulkami:

  • Snížení nákladů na úložiště a výpočetní prostředky
  • Rychlejší výkon dotazů napříč všemi typy klientů
  • Automatická údržba a optimalizace tabulek.
  • Zabezpečený přístup pro externí klienty prostřednictvím otevřených rozhraní API.
  • Podpora formátů Delta Lake a Apache Iceberg
  • Automatické upgrady na nejnovější funkce platformy

Můžete pracovat se spravovanými tabulkami ve všech jazycích a produktech podporovaných v Azure Databricks. K vytváření, aktualizaci, odstraňování nebo dotazování spravovaných tabulek potřebujete určitá oprávnění. Viz Správa oprávnění v Unity Catalogu.

Note

Tato stránka popisuje pouze spravované tabulky katalogu Unity. Spravované tabulky ve starším metastoru Hive najdete v tématu Databázové objekty ve starším metastoru Hive.

Výhody spravovaných tabulek v Katalogu Unity

Spravované tabulky Služby Unity optimalizují náklady na úložiště a rychlost dotazů a umožňují interoperabilitu s nástroji třetích stran pro Delta Lake a Apache Iceberg. Pro zjednodušení správy a výkonu dat používají tyto spravované tabulky technologie založené na umělé inteligenci, jako je komprimace velikosti souborů a inteligentní shromažďování statistik.

Spravované tabulky podporují interoperabilitu tím, že umožňují přístup z klientů Delta Lake a Apache Iceberg. Viz Přístup k datům Databricks pomocí externích systémů.

Následující funkce jsou jedinečné pro spravované tabulky Katalogu Unity a nejsou dostupné pro externí tabulky a cizí tabulky:

Feature Benefits Konfigurace
Přírůstky do katalogu Umožňuje vícepříkazové transakce napříč tabulkami, rychlejší plánování dotazů díky poskytování metadat přímo z Unity Catalog, možnost vynucovat změny schématu a omezení a bezpečné zápisy z externích enginů. Ve výchozím nastavení je vypnuto.
Pokud chcete tuto vlastnost zapnout, nastavte delta.feature.catalogManaged vlastnost tabulky. Viz Povolení potvrzení katalogu.
Prediktivní optimalizace Automaticky optimalizuje rozložení dat a výpočetní prostředky pomocí umělé inteligence bez nutnosti ruční údržby. Databricks doporučuje povolit prediktivní optimalizaci pro všechny spravované tabulky, aby se snížily náklady na úložiště a výpočetní prostředky.
Automaticky se spustí:
Ve výchozím nastavení je povoleno pro všechny nové účty vytvořené 11. listopadu 2024 nebo po 11. listopadu 2024. U aktuálních účtů Azure Databricks ve výchozím nastavení postupně povoluje prediktivní optimalizaci. Viz Ověření, jestli je povolená prediktivní optimalizace.
Informace o konfiguraci najdete v tématu Povolení prediktivní optimalizace.
Vícepříkazové transakce Umožňuje spouštět více příkazů SQL nad jednou nebo více tabulkami v rámci jediného atomického commitu se zárukami ACID. Všechny změny buď proběhnou úspěšně společně, nebo se společně vrátí zpět. Používá se pro uložené procedury a skriptování SQL v klíčových úlohách skladových zásob.
Transakce, které se zapisují do spravovaných tabulek Delta Lake, jsou ve verzi Public Preview.
Transakce, které se zapisují do spravovaných tabulek Apache Iceberg, jsou ve verzi Private Preview.
Ve výchozím nastavení je vypnuto.
Slouží BEGIN ATOMIC ... END; pro neinteraktivní transakce nebo BEGIN TRANSACTION; ... COMMIT; pro interaktivní transakce. Viz Režimy transakcí.
Automatické shlukování kapalin U tabulek s prediktivní optimalizací liquid clustering inteligentně vybírá klíče clusterování a automaticky je aktualizuje podle toho, jak se mění vzorce dotazů, aby zlepšil výkon a snížil náklady. Ve výchozím nastavení je vypnuto.
Informace o konfiguraci najdete v tématu Povolení clusteringu Liquid.
Ukládání metadat do mezipaměti Ukládání metadat transakcí do mezipaměti v paměti zvyšuje výkon dotazů minimalizací požadavků na transakční protokol uložený v cloudu. Ve výchozím nastavení povolena. Nekonfigurovatelné.
Indexy fulltextového vyhledávání Zrychluje vyhledávání podřetězců a klíčových slov v textových sloupcích pomocí funkcí search a isearch. Pokud se index použije, Azure Databricks přeskočí soubory, které nemůžou obsahovat odpovídající řádky, což snižuje množství naskenovaných dat.
V beta verzi a vyžaduje Databricks Runtime 18.2 a vyšší.
Ve výchozím nastavení je vypnuto.
Vytvořit pomocí CREATE SEARCH INDEX.
Automatické odstranění souboru po DROP TABLE příkazu Pokud odstraníte spravovanou tabulku, Azure Databricks odstraní datové soubory v cloudovém úložišti po vypršení doby obnovení (výchozí 7 dnů), což snižuje náklady na úložiště. U externích tabulek musíte soubory z kontejneru úložiště odstranit ručně. Ve výchozím nastavení povolena. Období obnovení můžete nakonfigurovat na úrovni katalogu nebo schématu. Viz Vyřazení spravované tabulky.

Přístup k datům Databricks pomocí externích systémů

Spravované tabulky podporují interoperabilitu tím, že umožňují přístup z klientů Delta Lake a Apache Iceberg.

Unity Catalog prostřednictvím otevřených rozhraní API a vydávání přihlašovacích údajů umožňuje externím enginům, jako jsou Trino, DuckDB, Apache Spark a Daft, i enginům integrovaným s katalogem Iceberg REST, jako je Dremio, přistupovat ke spravovaným tabulkám. Pro externí klienty, kteří nepodporují otevřená rozhraní API, můžete pomocí režimu kompatibility číst spravované tabulky pomocí jakéhokoli klienta Delta Lake nebo Apache Iceberg. OpenSharing, protokol open source, umožňuje zabezpečené, řízené sdílení dat s externími partnery a platformami.

Podívejte se na seznam podporovaných externích modulů nebo si projděte dokumentaci k vašemu modulu, pokud není uvedená v tomto seznamu.

Následující otevřená rozhraní API umožňují externím systémům přístup ke spravovaným tabulkám služby Unity Catalog:

  • Rozhraní Unity REST API má ke spravovaným tabulkám Delta Lake oprávnění ke čtení, zápisu a vytváření přístupu.
  • Iceberg REST Catalog (IRC) má pro klienty Apache Icebergu přístup ke čtení, zápisu a vytváření přístupu ke spravovaným tabulkám Apache Iceberg a přístupu jen pro čtení k tabulkám Delta Lake s povoleným čtením Apache Iceberg (UniForm).

Obě rozhraní API podporují vydávání přihlašovacích údajů, které poskytují dočasné přihlašovací údaje s vymezeným oborem, jež přebírají oprávnění daného objektu Azure Databricks, a zároveň uchovávají kontroly správného řízení a zabezpečení.

OpenSharing je protokol open source, který umožňuje zabezpečený a řízený přístup k datům externím partnerům a platformám. Pomocí OpenSharingu můžete partnerům udělit dočasný přístup jen pro čtení.

Všechna čtení a zápisy do spravovaných tabulek musí používat názvy tabulek a katalog a názvy schémat tam, kde existují. Například: catalog_name.schema_name.table_name. Přístup ke spravovaným tabulkám katalogu Unity založený na cestě není podporován (s výjimkou režimu kompatibility), protože obchází řízení přístupu katalogu Unity a brání správnému fungování funkcí spravovaných tabulek.

Vytvoření spravované tabulky

Pokud chcete vytvořit spravovanou tabulku, musíte mít:

  • USE SCHEMA v nadřazeném schématu tabulky.
  • USE CATALOG v hlavním katalogu tabulky.
  • CREATE TABLE v nadřazeném schématu tabulky.

K vytvoření prázdné spravované tabulky použijte následující syntaxi. Nahraďte zástupné hodnoty:

  • <catalog-name>: Název katalogu, který bude obsahovat tabulku.
  • <schema-name>: Název schématu obsahující tabulku.
  • <table-name>: Název tabulky.
  • <column-specification>: Název a datový typ každého sloupce.

SQL

-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
)
USING iceberg;

Python

Vytvoření spravované tabulky Delta Lake pomocí saveAsTable():

from pyspark.sql.types import StructType, StructField, StringType

schema = StructType([StructField("<column-name>", StringType())])

spark.createDataFrame([], schema).write \
  .saveAsTable("<catalog-name>.<schema-name>.<table-name>")

Případně použijte rozhraní API DeltaTableBuilder pro možnosti specifické pro Delta, jako jsou generované sloupce a vlastnosti tabulky:

from delta.tables import DeltaTable

DeltaTable.create(spark) \
  .tableName("<catalog-name>.<schema-name>.<table-name>") \
  .addColumn("<column-name>", "<data-type>") \
  .property("<key>", "<value>") \
  .execute()

Vytvoření spravované tabulky Apache Iceberg:

from pyspark.sql.types import StructType, StructField, StringType

schema = StructType([StructField("<column-name>", StringType())])

spark.createDataFrame([], schema).write \
  .format("iceberg") \
  .saveAsTable("<catalog-name>.<schema-name>.<table-name>")

Aby se zachoval výkon čtení a zápisů, Azure Databricks pravidelně spouští operace pro optimalizaci spravovaných metadat tabulek Apache Iceberg. Tato úloha se provádí pomocí bezserverového výpočetního prostředí, který má MODIFY oprávnění k tabulce Apache Iceberg. Tato operace zapisuje pouze do metadat tabulky a výpočetní prostředky uchovávají oprávnění pouze k tabulce po dobu trvání úlohy.

Note

Pokud chcete vytvořit tabulku Apache Iceberg, explicitně zadejte USING iceberg. V opačném případě Azure Databricks ve výchozím nastavení vytvoří tabulku Delta Lake.

Spravované tabulky můžete vytvářet z výsledků dotazu nebo operací zápisu do datového rámce. Následující články ukazují některé z mnoha vzorů, které můžete použít k vytvoření spravované tabulky v Azure Databricks:

Pokud chcete vytvořit kopii existující spravované tabulky, použijte klon. Spravované tabulky Delta Lake podporují hloubkové a mělké klonování. Spravované tabulky Apache Iceberg podporují pouze hloubkové klonování. Viz Klonování tabulky na Azure Databricks a Klonování spravované tabulky Iceberg.

Vyřazení spravované tabulky

Pokud chcete odstranit spravovanou tabulku, musíte mít:

  • MANAGE v tabulce nebo musíte být vlastníkem tabulky.
  • USE SCHEMA v nadřazeném schématu tabulky.
  • USE CATALOG v hlavním katalogu tabulky.

Pokud chcete odstranit spravovanou tabulku, spusťte následující příkaz:

SQL

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Python

spark.sql("DROP TABLE IF EXISTS catalog_name.schema_name.table_name")

Alternativně v Databricks Runtime 18.2 a novější použijte spark.catalog.dropTable():

spark.catalog.dropTable("catalog_name.schema_name.table_name", ifExists=True)

Katalog Unity podporuje UNDROP TABLE příkaz k obnovení náhodně vynechaných spravovaných tabulek. Ve výchozím nastavení se tabulky dají obnovit po dobu 7 dnů po vyřazení. Po skončení období obnovení Azure Databricks odstraní podkladové datové soubory z cloudového tenanta do 48 hodin.

Konfigurace doby obnovení

Důležité

Konfigurovatelná doba obnovení je ve verzi Public Preview.

Můžete nakonfigurovat, jak dlouho zahozené spravované tabulky zůstanou obnovitelné na úrovni katalogu nebo schématu. Pokud jsou období obnovení nastavena na obou úrovních, má nastavení na úrovni schématu přednost pro tabulky v daném schématu.

Pokud chcete nakonfigurovat období obnovení, musíte mít MANAGE oprávnění nebo vlastnictví katalogu nebo schématu. Toto nastavení platí pouze pro tabulky, které se odstraní po jeho nakonfigurování. Nemá vliv na tabulky, které už byly vyřazeny.

Období obnovení je možné nastavit na 0 hodin (zakázat obnovení) nebo mezi 7 až 30 dny včetně. Delší doba obnovení (až 30 dnů) poskytuje přidanou ochranu před náhodnými poklesy důležitých produkčních dat. Kratší doba obnovení nebo její nastavení na 0 způsobí rychlejší odstranění vyřazených dat – což je užitečné při úsporách nákladů v úlohách, které často vytvářejí a odstraňují tabulky v rámci kanálů ETL. Nastavení doby obnovení na 0 znamená, že vyřazené tabulky nelze obnovit pomocí UNDROP. Datové soubory se odstraní z cloudového úložiště do 48 hodin od vyřazení tabulky.

K nastavení období obnovení použijte ALTER CATALOG nebo ALTER SCHEMA s klauzulí RETAIN DROPPED TO :

SQL

-- Set a 30-day recovery period on a catalog
ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS;

-- Set a 7-day recovery period on a schema (overrides the catalog setting)
ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS;

Python

spark.sql("ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS")
spark.sql("ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS")

Období obnovení můžete také nastavit při vytváření katalogu nebo schématu RETAIN DROPPED FOR pomocí klauzule:

SQL

CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS;
CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS;

Python

spark.sql("CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS")
spark.sql("CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS")

Pokud chcete zkontrolovat aktuální období obnovení, spusťte DESCRIBE EXTENDEDpříkaz . Výstup obsahuje Recovery Period Hours řádek:

SQL

DESCRIBE CATALOG EXTENDED my_catalog;
DESCRIBE SCHEMA EXTENDED my_catalog.my_schema;

Python

spark.sql("DESCRIBE CATALOG EXTENDED my_catalog").show()
spark.sql("DESCRIBE SCHEMA EXTENDED my_catalog.my_schema").show()