A Unity Catalog által felügyelt táblák a Delta Lake-hez és az Apache Iceberghez

A Unity Catalog által felügyelt táblák a Delta Lake és az Apache Iceberg Azure Databricks alapértelmezett és ajánlott táblázattípusai. A Unity Catalog kezeli az olvasási, írási, tárolási és optimalizálási feladatokat. Lásd: Külső vagy külföldi Delta Lake-táblák konvertálása Unity Catalog által felügyelt táblákká.

A felügyelt táblák adatfájljait a rendszer az őket tartalmazó sémában vagy katalógusban tárolja. Lásd, Felügyelt tárolóhely megadása a Unity Katalógusban.

A külső és idegen táblákhoz képest a kezelt táblák tárolása és lekérdezése olcsóbb, automatikusan karbantartják és optimalizálják magukat, és nyílt API-kon keresztül a külső ügyfelek számára is elérhetők maradnak.

Felügyelt táblákkal dolgozhat az Azure Databricksben támogatott összes nyelv és termék esetében. Felügyelt táblák létrehozásához, frissítéséhez, törléséhez vagy lekérdezéséhez bizonyos jogosultságokra van szüksége. Lásd: Jogosultságok kezelése a Unity Catalogban.

Note

Ez a lap csak a Unity Catalog által felügyelt táblákat ismerteti. Az örökölt Hive-metaadattár felügyelt tábláiért lásd : Adatbázis-objektumok az örökölt Hive metaadattárban.

A Unity Catalog által felügyelt táblák előnyei

A Unity Catalog által felügyelt táblák optimalizálják a tárolási költségeket és a lekérdezési sebességet, és lehetővé teszik a Delta Lake és az Apache Iceberg harmadik féltől származó eszközeivel való együttműködést. Az adatkezelés és a teljesítmény egyszerűsítése érdekében ezek a felügyelt táblák AI-alapú technológiákat használnak, például a fájlméret tömörítését és az intelligens statisztikák gyűjtését.

A felügyelt táblák a Delta Lake- és Apache Iceberg-ügyfelekről való hozzáférés engedélyezésével támogatják az együttműködést. Lásd: Databricks-adatok elérése külső rendszerekkel.

A következő funkciók csak a Unity Catalog által felügyelt táblák esetében érhetők el, és nem állnak rendelkezésre a külső és az idegen táblák esetében:

Feature Benefits Konfiguráció
Katalógus véglegesítései Lehetővé teszi a többmondatos tranzakciókat táblák között, gyorsabb lekérdezéstervezést, végrehajtható séma- és korlátozásváltozásokat, valamint biztonságos írásokat külső motorokból. Alapértelmezés szerint ki van kapcsolva. A bekapcsoláshoz állítsa be a delta.feature.catalogManaged táblatulajdonságot. Lásd: Katalógus véglegesítéseinek engedélyezése.
Prediktív optimalizálás Automatikusan optimalizálja az adatelrendezést és a számítást mesterséges intelligencia segítségével, manuális karbantartás nélkül. A Databricks azt javasolja, hogy minden felügyelt tábla esetében engedélyezze a prediktív optimalizálást a tárolási és számítási költségek csökkentése érdekében. Alapértelmezés szerint engedélyezve azoknál a fiókoknál, amelyeket 2024. november 11-én vagy azt követően hoztak létre. Az Azure Databricks fokozatosan engedélyezi a meglévő fiókok számára. A konfigurálásról további információt a prediktív optimalizálás engedélyezése című témakörben talál.
Többutas tranzakciók Több SQL utasítást futtass be egy vagy több táblán egyetlen atomikus commitként, ACID garanciákkal. Minden módosítás együtt sikeres, vagy együtt visszaállítva. Használat tárolt eljárásokhoz és SQL szkriptekhez. Alapértelmezés szerint ki van kapcsolva. A tranzakciós mód kiválasztásához lásd: Tranzakciós módok.
A felügyelt Apache Iceberg-táblákba történő írási műveletek privát előzetesben érhetők el.
Automatikus folyadék klaszterezés A prediktív optimalizálású táblák esetén automatikusan kiválasztja és frissíti a klaszterkulcsokat, ahogy a lekérdezési minták változnak, hogy javítsa a teljesítményt és csökkentse a költségeket. Alapértelmezés szerint ki van kapcsolva. A konfigurálásról lásd: Liquid clustering engedélyezése.
Metaadatok gyorsítótárazása A tranzakciós metaadatok memórián belüli gyorsítótárázása javítja a lekérdezések teljesítményét azáltal, hogy minimalizálja a felhőben tárolt tranzakciónaplóra irányuló kéréseket. Alapértelmezés szerint engedélyezve van. Nem konfigurálható.
Teljes szöveges keresési indexek Felgyorsítja a szövegoszlopokban végzett részsztring- és kulcsszókeresést a search és isearch függvények használatával. Az Azure Databricks kihagyja azokat a fájlokat, amelyek nem tartalmazhatnak megfelelő sorokat, így csökkentve a beolvasható adat mennyiségét. Alapértelmezés szerint ki van kapcsolva. Hozzon létre CREATE SEARCH INDEX-val.
Béta-fázisban. Databricks Runtime 18.2 vagy annál magasabb verziót igényel.
Automatikus fájltörlés parancs DROP TABLE után Amikor eltávolítasz egy kezelt táblát, az Azure Databricks törli az adatfájlokat a felhőtárolóból a helyreállítási időszak lejárta után (alapértelmezett 7 nap), így csökkentve a tárolási költségeket. Külső táblák esetében manuálisan kell törölnie a fájlokat a tárolási vödörből. Alapértelmezés szerint engedélyezve van. A helyreállítási időszakot a katalógus vagy séma szintjén konfigurálhatja. Lásd: Kezelt tábla törlése.

Databricks-adatok elérése külső rendszerekkel

A felügyelt táblák a Delta Lake- és Apache Iceberg-ügyfelekről való hozzáférés engedélyezésével támogatják az együttműködést .

A Unity Catalog nyílt API-kon és hitelesítő adatok kiadásán keresztül lehetővé teszi, hogy a külső motorok, például a Trino, a DuckDB, az Apache Spark, a Daft, valamint az Iceberg REST-katalógusba integrált motorok, például a Dremio, hozzáférjenek a felügyelt táblákhoz. A nyitott API-kat nem támogató külső ügyfelek esetében a kompatibilitási móddal bármely Delta Lake- vagy Apache Iceberg-ügyfél használatával olvashat felügyelt táblákat. A nyílt forráskód protokoll, az OpenSharing lehetővé teszi a külső partnerekkel és platformokkal való biztonságos, szabályozott adatmegosztást.

Tekintse meg a támogatott külső motorok listáját, vagy ellenőrizze a motor dokumentációját, ha az nem szerepel a listában.

A következő nyílt API-k lehetővé teszik a külső rendszerek számára, hogy hozzáférjenek a Unity Catalog által felügyelt táblákhoz:

  • A Unity REST API olvasási, írási és létrehozási hozzáférést biztosít a Delta Lake-ügyfelek számára a felügyelt Delta Lake-táblákhoz.
  • Az Iceberg REST Catalog (IRC) olvasási, írási és létrehozási hozzáférést biztosít az Apache Iceberg-kliensek számára a felügyelt Apache Iceberg-táblákhoz, valamint csak olvasási hozzáférést biztosít azokhoz a Delta Lake-táblákhoz, amelyeknél engedélyezve van az Apache Iceberg-alapú olvasás.

Mindkét API támogatja a hitelesítő adatok megadását, amely ideiglenes, hatókörön belüli hitelesítő adatokat biztosít, amelyek öröklik a kérést kérő Azure Databricks-tag jogosultságait, fenntartva az irányítási és biztonsági vezérlőket.

Az OpenSharing egy nyílt forráskód protokoll, amely lehetővé teszi a külső partnerek és platformok biztonságos és szabályozott adathozzáférését. Az OpenSharinggel ideiglenes, csak olvasható hozzáférést biztosíthat a partnereknek.

A felügyelt táblákba történő olvasásoknak és írásoknak táblaneveket, katalógus- és sémaneveket kell használniuk, ahol léteznek. Például: catalog_name.schema_name.table_name. A Unity Catalog által felügyelt táblák elérési útja nem támogatott (kivéve kompatibilitási módban), mert áthalad a Unity Catalog hozzáférési vezérlőin, és megakadályozza a felügyelt táblafunkciók megfelelő működését.

Felügyelt tábla létrehozása

Felügyelt tábla létrehozásához a következőkre van szüksége:

  • USE SCHEMA a tábla szülősémáján.
  • USE CATALOG a tábla szülő katalógusában.
  • CREATE TABLE a tábla szülősémáján.

Az alábbi szintaxis használatával hozzon létre egy üres felügyelt táblát. Cserélje le a helykitöltő értékeket.

  • <catalog-name>: A táblát tartalmazó katalógus neve.
  • <schema-name>: A táblát tartalmazó séma neve.
  • <table-name>: A tábla neve.
  • <column-specification>: Minden oszlop neve és adattípusa.

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

Hozzon létre egy felügyelt Delta Lake-táblát a saveAsTable() használatával:

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>")

Másik lehetőségként használja az API-t a DeltaTableBuilder Delta-specifikus beállításokhoz, például a létrehozott oszlopokhoz és a táblatulajdonságokhoz:

from delta.tables import DeltaTable

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

Felügyelt Apache Iceberg-tábla létrehozása:

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>")

Az olvasási és írási teljesítmény fenntartása érdekében Azure Databricks rendszeresen futtat műveleteket a felügyelt Apache Iceberg-tábla metaadatainak optimalizálása érdekében. Ezt a feladatot kiszolgáló nélküli számítással hajtja végre, amely rendelkezik MODIFY az Apache Iceberg táblára vonatkozó engedélyekkel. Ez a művelet csak a tábla metaadataira ír, és a számítás csak a feladat időtartama alatt tart fenn engedélyeket a táblához.

Note

Apache Iceberg-tábla létrehozásához explicit módon adja meg USING iceberg. Ellenkező esetben az Azure Databricks alapértelmezés szerint létrehoz egy Delta Lake-táblát.

Felügyelt táblákat lekérdezési eredményekből vagy DataFrame írási műveletekből hozhat létre. Az alábbi cikkek a felügyelt táblák Azure Databricksen való létrehozásához használható számos minta közül mutatnak be néhányat:

Meglévő felügyelt tábla másolatának létrehozásához használja a klónozást. A felügyelt Delta Lake-táblák támogatják a mély és sekély klónozást. A felügyelt Apache Iceberg-táblák csak a mély klónozást támogatják. Lásd: Tábla klónozása az Azure Databricksben és Felügyelt Iceberg-tábla klónozása.

Felügyelt tábla törlése

Felügyelt tábla törléséhez Önnek a következőkkel kell rendelkeznie:

  • MANAGE a táblában, vagy Önnek kell a tábla tulajdonosának lennie.
  • USE SCHEMA a tábla szülősémáján.
  • USE CATALOG a tábla szülő katalógusában.

Felügyelt tábla elvetéséhez futtassa a következő parancsot:

SQL

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Python

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

Másik lehetőségként a Databricks Runtime 18.2-ben és újabb verziókban használja a következőt spark.catalog.dropTable():

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

A Unity Catalog támogatja a UNDROP TABLE véletlenül elvetett felügyelt táblák helyreállítására vonatkozó parancsot. Alapértelmezés szerint a táblák az elvetés után 7 napig helyreállíthatók. A helyreállítási időszak lejárta után Azure Databricks 48 órán belül törli a mögöttes adatfájlokat a felhőbeli bérlőből.

A helyreállítási időszak konfigurálása

Important

A konfigurálható helyreállítási időszak nyilvános előzetes verzióban érhető el.

Konfigurálhatja, hogy az elvetett felügyelt táblák mennyi ideig maradnak helyreállíthatók a katalógus vagy a séma szintjén. Ha a helyreállítási időszakok mindkét szinten vannak beállítva, a sémaszintű beállítás elsőbbséget élvez a sémában lévő tábláknál.

A helyreállítási időszak konfigurálásához jogosultsággal vagy tulajdonjoggal kell rendelkeznie MANAGE a katalógusban vagy a sémában. Ez a beállítás csak a konfigurálás után elvetett táblákra vonatkozik. Ez nem érinti a már törölt táblákat.

A felépülési idő lehet 0 óra, ami letiltja a felépülést, vagy 7-30 nap. A hosszabb időszak védelmet nyújt a kritikus adatok véletlen törlésével szemben, míg a rövidebb időszak gyorsabban törli a törölt adatokat, így csökkentve a tárolási költségeket azokban az ETL-folyamatokban, amelyek gyakran hoznak létre és törölnek táblákat. Ha 0-ra van állítva, a törölt táblákat nem lehet helyreállítani a(z) UNDROP használatával. Az Azure Databricks 48 órán belül törli az adatfájlokat a felhőtárolóból.

A helyreállítási időszak beállításához használja a ALTER CATALOG vagy ALTER SCHEMA elemet a RETAIN DROPPED TO záradékkal:

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")

A helyreállítási időszakot katalógus vagy séma létrehozásakor is beállíthatja a RETAIN DROPPED FOR záradékkal:

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")

Az aktuális helyreállítási időszak ellenőrzéséhez futtassa a következőt DESCRIBE EXTENDED: . A kimenet egy Recovery Period Hours sort tartalmaz:

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()