A Unity Catalog használata csövezésekkel

A Databricks javasolja a Lakeflow-folyamatok konfigurálását a Unity Catalog használatával. Az újonnan létrehozott folyamatok esetében a Unity Catalog használata az alapértelmezett.

A Unity-katalógussal konfigurált folyamatok az összes definiált materializált nézetet és streamtáblát közzéteszik a megadott katalógusban és sémában. A Unity Catalog-folyamatok más Unity Catalog-táblákból és kötetekből is olvashatók.

A Unity Catalog-folyamat által létrehozott táblák engedélyeinek kezeléséhez használja a GRANT és a REVOKE.

Megjegyzés:

Ez a cikk a pipelines jelenlegi alapértelmezett közzétételi módjának funkcióit ismerteti. A 2025. február 5. előtt létrehozott pipeline-ek a régi közzétételi módot és a LIVE virtuális sémát használhatják. Lásd: LIVE séma (régi változat).

Követelmények

Ha streamelési táblákat és materializált nézeteket szeretne létrehozni egy célsémában a Unity Catalogban, a következő engedélyekkel kell rendelkeznie a sémához és a szülőkatalógushoz:

  • USE CATALOG jogosultságok a célkatalógusban.
  • A célsémára CREATE MATERIALIZED VIEW és USE SCHEMA jogosultságokat kell biztosítani, ha a folyamat materializált nézeteket hoz létre.
  • CREATE TABLE és USE SCHEMA jogosultságok a célséma vonatkozásában, ha a csővezeték adatfolyam táblákat hoz létre.
  • Ha a folyamat új sémákat hoz létre, USE CATALOG és CREATE SCHEMA jogosultságokkal kell rendelkeznie a célkatalógusban.

A Unity Catalog-kompatibilis folyamat futtatásának számítási követelményei:

  • A számítási erőforrást szabványos hozzáférési móddal kell konfigurálni. A dedikált számítás nem támogatott. Lásd: Hozzáférési módok.

A pipeline-ok által a Unity Catalog használatával létrehozott táblák lekérdezéséhez szükséges számítási erőforrások (ideértve a streamelési táblákat és a materializált nézeteket) az alábbiak bármelyikét tartalmazhatják:

  • SQL-raktárak
  • Standard hozzáférési mód számítása a Databricks Runtime 13.3 LTS vagy újabb verzióján.
  • Dedikált hozzáférési módú számítás, ha a részletes hozzáférés-vezérlés engedélyezve van a dedikált számításon (azaz a Databricks Runtime 15.4-et vagy újabb verzióját futtatja, és a kiszolgáló nélküli számítás engedélyezve van a munkaterületen). További információ: Részletes hozzáférés-vezérlés dedikált számításon.
  • Dedikált hozzáférési mód számítása 13,3 LTS és 15.3 között, csak akkor, ha a tábla tulajdonosa futtatja a lekérdezést.

További számítási korlátozások érvényesek. Tekintse meg az alábbi szakaszt.

korlátozások

A Unity Catalog folyamatokkal való használatakor a következők a korlátozások:

  • A Unity Catalog-kompatibilis folyamat nem hozható létre egy olyan metaadattárhoz csatolt munkaterületen, amelyet a Unity Catalog nyilvános előzetes verziója során hoztak létre. Tekintse meg a jogosultságöröklés frissítését.
  • A JAR-ek nincsenek támogatva. Csak külső Python kódtárak támogatottak. Lásd: Folyamatok Python függőségeinek kezelése.
  • A streamelési tábla sémáját módosító adatmanipulációs nyelvi (DML-) lekérdezések nem támogatottak.
  • A folyamatokban létrehozott materializált nézet nem használható streamforrásként a folyamaton kívül, például egy másik folyamatban vagy egy alárendelt jegyzetfüzetben.
  • A materializált nézetek és streaming táblák adatai a tartalmazó séma tárolási helyén vannak tárolva. Ha nincs megadva sématároló hely, a rendszer a táblákat a katalógus tárolási helyén tárolja. Ha a séma- és katalógustárolási helyek nincsenek megadva, a táblák a metaadattár gyökértárolójában lesznek tárolva.
  • A Katalóguskezelő Előzmények lap nem jeleníti meg a materializált nézetek előzményeit.
  • A LOCATION tulajdonság nem támogatott tábla definiálásakor.
  • A Unity Catalog-kompatibilis folyamatok nem tudnak közzétenni a Hive-metaadattárban.
  • A globális init szkriptek nem támogatottak. A Databricks a folyamat környezeti beállításainak használatát javasolja a függőségek telepítéséhez. Klasszikus számítás esetén fürthatókörű init-szkripteket használhat, de a Databricks inkább a környezeti beállításokat javasolja. A kiszolgáló nélküli folyamatok nem támogatják az init-szkripteket. Lásd: Folyamatok Python függőségeinek kezelése.
  • A Unity Catalog felhasználó által definiált függvények (UDF-ek) létrehozása egy csővezetéken belül nem támogatott. A meglévő Unity Catalog UDF-eket hívhatod a pipeline lekérdezéseidben. Lásd: SQL és Python felhasználó által definiált függvények (UDF-ek) a Unity Catalogban.

Megjegyzés:

A materializált nézeteket támogató mögöttes fájlok tartalmazhatnak olyan felsőbb rétegbeli táblákból származó adatokat (beleértve a személyazonosításra alkalmas adatokat is), amelyek nem jelennek meg a materializált nézetdefinícióban. Ezeket az adatokat a rendszer automatikusan hozzáadja a mögöttes tárolóhoz, hogy támogassa a materializált nézetek növekményes frissítését.

Mivel a materializált nézet alapjául szolgáló fájlok a materializált nézet sémájának nem részét képező felsőbb rétegbeli táblákból származó adatok feltárását kockáztathatják, a Databricks azt javasolja, hogy ne ossza meg az alapul szolgáló tárolót a nem megbízható alsóbb rétegbeli felhasználókkal.

Tegyük fel például, hogy egy materializált nézetdefiníció tartalmaz egy COUNT(DISTINCT field_a) záradékot. Annak ellenére, hogy a materializált nézetdefiníció csak az összesítő záradékot COUNT DISTINCT tartalmazza, a mögöttes fájlok tartalmazzák a tényleges értékek field_alistáját.

A Hive metaadattár és a Unity Catalog-folyamatok együttes használata

A munkaterület tartalmazhat a Unity Catalogot és az örökölt Hive-metaadattárat használó folyamatokat. Egyetlen folyamat azonban nem tud írni a Hive metaadattárba és a Unity-katalógusba. A Hive metaadattárba írt meglévő folyamatok nem frissíthetők a Unity Catalog használatára. A Hive metaadattárba írt meglévő folyamat migrálásához létre kell hoznia egy új folyamatot, és újra kell betöltenie az adatokat az adatforrás(ok)ból. Lásd: Unity Catalog-folyamat létrehozása Hive-metaadattár-folyamat klónozásával.

A Unity-katalógust nem használó meglévő folyamatokra nincs hatással a Unity Katalógussal konfigurált új folyamatok létrehozása. Ezek a folyamatok továbbra is megőrzik az adatokat a Hive metaadattárban a konfigurált tárolási hely használatával.

Ha a dokumentum másként nem rendelkezik, a Unity-katalógust használó folyamatok minden meglévő adatforrást és folyamatfunkciót támogatnak. A Python és SQL interfészek egyaránt támogatottak a Unity Catalogot használó folyamatokkal.

Inaktív táblák

Amikor egy csővezetéket úgy konfigurálnak, hogy adatokat maradtasson be a Unity Catalog-ba, a csővezeték kezeli a frissítési ütemtervet és a hozzá tartozó táblák engedélyeit, amíg a csővezeték aktív.

A táblák inaktívvá válhatnak, ha definíciójukat eltávolítják egy folyamatból. A következő folyamatfrissítés inaktívként jelöli meg a megfelelő materializált nézetet vagy streamelési táblabejegyzést.

Ha módosítja a folyamat alapértelmezett katalógusát vagy sémáját, és nem használ teljes táblaneveket a folyamat forráskódjában, a következő folyamatfuttatás létrehozza a materializált nézetet vagy streamelési táblát az új katalógusban vagy sémában, és a régi helyen lévő korábbi materializált nézet vagy streamelő tábla inaktívként van megjelölve.

Az inaktív táblákat továbbra is lekérdezheti, de a folyamat már nem frissíti őket. A materializált nézetek vagy streamelési táblák törléséhez explicit módon DROP a táblát.

  • A parancs használatával 7 napon belül helyreállíthatja az UNDROP elvetett táblákat.
  • Ha meg szeretné őrizni az örökölt viselkedést, amikor a materializált nézet vagy a streamelési tábla bejegyzése el lesz távolítva a Unity Katalógusból a következő folyamatfrissítéskor, állítsa be a folyamatkonfigurációs "pipelines.dropInactiveTables": "true". A rendszer egy ideig megőrzi a tényleges adatokat, hogy azok helyreállíthatók legyenek, ha véletlenül törölték őket. Az adatok 7 napon belül helyreállíthatók úgy, hogy a materializált nézetet vagy a streamelési táblát újra hozzáadják a folyamatdefinícióhoz.

Folyamat törlése

Amikor törlönk egy Unity Catalog pipeline-t, amely az alapértelmezett kiadási módot használja, a hozzá tartozó megjelenített nézetek, streaming táblák és nézetek alapértelmezetten megmaradnak. A megtartott táblák lekérdezhetők, de nem frissíthetők, amíg nem helyezik át őket egy aktív csővezetékbe. Lásd Táblák áthelyezése csővezetékek között.

Annak megállapítására, hogy egy csővezeték az alapértelmezett közzétételi módot használja-e, ellenőrizze a Összefoglaló mezőt a csővezeték beállítások felületén, vagy ellenőrizze, hogy ez effectivePublishingModeDEFAULT_PUBLISHING_MODE benne van a GET /api/2.0/pipelines/{pipeline_id} válaszban.

A felhasználói felületen a pipeline törlése alapértelmezés szerint megtartja a táblákat.

Megjegyzés:

Ez a változás csak a Unity Catalog pipeline-okra vonatkozik. A Hive metastore pipeline-ek nem érintettek.

Egy folyamat és a hozzá tartozó táblák együttes törléséhez állítsa a(z) cascade mezőt true értékre az API-kérésben.

DELETE /api/2.0/pipelines/{pipeline_id}?cascade=true

Lásd : Folyamat törlése a Databricks REST API dokumentációjában.

Táblák írása a Unity Katalógusba egy adatfolyamatból

Ha a táblákat a Unity Catalogba szeretné írni, konfigurálnia kell az adatfolyamot, hogy az a munkaterületen keresztül működjön. Amikor létrehoz egy folyamatot, válassza ki a Unity CatalogTárolási lehetőségek között, válasszon katalógust a Katalógus legördülő menüből, és válasszon meglévő sémát, vagy adja meg egy új séma nevét a Célséma legördülő menüben. A Unity Catalog katalógusairól a Az Azure Databricks katalógusai? című témakörben olvashat. A Unity Catalog sémáiról a Mi a séma a Azure Databricks? című témakörben olvashat.

Megjegyzés:

Ha egy adatfolyamat a Unity Catalogba tesz közzé, az Azure Databricks a mögöttes adatok egy részét a fenntartott __databricks_internal katalógusban tárolja. Ez várható. Lásd a katalógust__databricks_internal.

Adatok betöltése a Unity Catalog-adatfeldolgozó csővezetékbe

A Unity Catalog használatára konfigurált folyamat a következő adatokból tud adatokat olvasni:

  • A Unity Catalog által felügyelt és külső táblák, nézetek, materializált nézetek és folyamatos táblák.
  • Hive metaadattártáblák és nézetek.
  • Automatikus betöltő a read_files() függvényt használva a Unity Catalog külső helyszíneiről való olvasáshoz.
  • Apache Kafka és Amazon Kinesis.

Az alábbiakban példákat láthat a Unity Catalog és a Hive metaadattár tábláinak olvasására.

Batch-betöltés Unity-katalógustáblából

SQL

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;

Python

@dp.materialized_view
def table_name():
  return spark.read.table("my_catalog.my_schema.table")

A változások streamelése a Unity Catalog táblából

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  STREAM(my_catalog.my_schema.table1);

Python

@dp.table
def table_name():
  return spark.readStream.table("my_catalog.my_schema.table")

Adatok betöltése a Hive metaadattárából

A Unity-katalógust használó folyamatok a Hive metaadattártábláiból olvashatnak adatokat a hive_metastore katalógus használatával:

SQL

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  <hms_federation_catalog>.some_schema.table;

Python

@dp.materialized_view
def table3():
  return spark.read.table("<hms_federation_catalog>.some_schema.table")

Adatok betöltése az automatikus betöltőből

SQL

CREATE OR REFRESH STREAMING TABLE table_name
AS SELECT *
FROM STREAM read_files(
  "/path/to/uc/external/location",
  format => "json"
)

Python

@dp.table(table_properties={"quality": "bronze"})
def table_name():
  return (
     spark.readStream.format("cloudFiles")
     .option("cloudFiles.format", "json")
     .load(f"{path_to_uc_external_location}")
 )

Materializált nézetek megosztása

Alapértelmezés szerint csak a folyamat tulajdonosa rendelkezik engedéllyel a folyamat által létrehozott adathalmazok lekérdezésére. Lehetővé teheti más felhasználóknak, hogy GRANT utasítások használatával lekérdezhessenek egy táblát, és REVOKE utasítások használatával visszavonhatják a lekérdezési hozzáférést. A Unity Catalog jogosultságairól további információt a Jogosultságok kezelése a Unity Katalógusbancímű témakörben talál.

SELECT jogosultság megadása egy táblán

GRANT SELECT ON TABLE
  my_catalog.my_schema.table_name
TO
  `user@databricks.com`

Kijelölés visszavonása egy táblában

REVOKE SELECT ON TABLE
  my_catalog.my_schema.table_name
FROM
  `user@databricks.com`

Táblalétrehozási vagy materializált nézet létrehozási jogosultság biztosítása

GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
  my_catalog.my_schema
TO
  { principal | user }

Folyamathoz tartozó vonalasság megtekintése

A folyamatokban definiált táblákhoz tartozó vonalasság a Catalog Explorerben látható. A Katalóguskezelő termékcsalád felhasználói felülete megjeleníti a materializált nézetekhez vagy streamelőtáblákhoz tartozó felső és alsóbb rétegbeli táblákat egy Unity Catalog-kompatibilis folyamatban. A Unity Catalog-beli Lineage funkcióval kapcsolatos további információkért lásd: Lineage a Unity Catalogban.

A Unity catalog-kompatibilis folyamatok materializált nézetei vagy streamelési táblái esetében a Catalog Explorer termékoldali felhasználói felülete arra a folyamatra is hivatkozik, amely a materializált nézetet vagy streamelési táblát hozta létre, ha a folyamat elérhető az aktuális munkaterületről.

Stream-táblázatban lévő adatok hozzáadása, módosítása vagy törlése

A Unity Catalogban közzétett streamtáblák módosításához használhat adatmanipulációs nyelvi (DML) utasításokat, például beszúrási, frissítési, törlési és egyesítési utasításokat. A DML-lekérdezések streamelési táblákon történő támogatása olyan használati eseteket tesz lehetővé, mint például a táblák frissítése az általános adatvédelmi rendeletnek (GDPR) való megfelelés érdekében.

Megjegyzés:

  • A streamelési tábla táblázatsémát módosító DML-utasítások nem támogatottak. Győződjön meg arról, hogy a DML-utasítások nem próbálják továbbfejleszteni a táblázatsémát.
  • A streamelési táblát frissítő DML-utasítások csak megosztott Unity Catalog-fürtön vagy SQL-raktárban futtathatók a Databricks Runtime 13.3 LTS és újabb verziók használatával.
  • Mivel a streamelés csak hozzáfűző adatforrásokat igényel, ha a feldolgozáshoz egy forrásstreamelési táblából kell streamelni módosításokkal (például DML-utasításokkal), állítsa be a skipChangeCommits jelölőt a forrásstreamelési tábla olvasásakor. Ha skipChangeCommits van beállítva, a rendszer figyelmen kívül hagyja a forrástábla rekordjait törlő vagy módosító tranzakciókat. Ha a feldolgozáshoz nincs szükség streamelési táblára, céltáblaként használhat materializált nézetet, amelyre nem vonatkozik a csak hozzáfűzési korlátozás.

Az alábbiakban olyan DML-utasításokat mutatunk be, amelyek módosítják a streamelési táblák rekordjait.

Adott azonosítójú rekordok törlése:

DELETE FROM my_streaming_table WHERE id = 123;

Adott azonosítójú rekordok frissítése:

UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;

Táblázatok közzététele sorszűrőkkel és oszlopmaszkokkal

Sorszűrők lehetővé teszik egy szűrőként alkalmazható függvény megadását, amikor egy táblavizsgálat sorokat olvas be. Ezek a szűrők biztosítják, hogy a későbbi lekérdezések csak olyan sorokat adjanak vissza, amelyek esetében a szűrő predikátum értéke igaz.

Az oszlopmaszkok lehetővé teszik az oszlopok értékeinek maszkolását, amikor egy táblázat beolvassa a sorokat. Az oszlop jövőbeli lekérdezései a kiértékelt függvény eredményét adják vissza az oszlop eredeti értéke helyett. További információ a sorszűrők és oszlopmaszkok használatáról: Sorszűrők és oszlopmaszkok.

Sorszűrők és oszlopmaszkok kezelése

A materializált nézetek és streamtáblák sorszűrőit és oszlopmaszkjait a CREATE OR REFRESH utasítással kell hozzáadni, frissíteni vagy elvetni.

A sorszűrőkkel és oszlopmaszkokkal rendelkező táblák definiálásával kapcsolatos részletes szintaxisért lásd: Pipeline SQL language reference and Lakeflow pipelines Python language reference.

Sorszűrő és oszlopmaszk viselkedése

A sorszűrők vagy oszlopmaszkok folyamaton belüli használatakor az alábbiak a fontos részletek:

  • Frissítés tulajdonosként: Amikor egy folyamatfrissítés materializált nézetet vagy streamelési táblát frissít, a sorszűrő és az oszlopmaszk-függvények a folyamat tulajdonosi jogosultságaival futnak. Ez azt jelenti, hogy a táblafrissítés a folyamatot létrehozó felhasználó biztonsági környezetét használja. A felhasználói környezetet ellenőrző függvények (például CURRENT_USER és IS_MEMBER) kiértékelése a folyamat tulajdonosának felhasználói környezetével történik.
  • Lekérdezés: Materializált nézet vagy streamelési tábla lekérdezésekor a felhasználói környezetet ellenőrző függvények (például CURRENT_USER és IS_MEMBER) kiértékelése a meghívó felhasználói környezetével történik. Ez a megközelítés a felhasználóspecifikus adatbiztonságot és hozzáférés-vezérlést kényszeríti ki az aktuális felhasználó kontextusa alapján.

Sorszintű szűrők és oszlopszintű maszkolások naplózása

A DESCRIBE EXTENDED, INFORMATION_SCHEMA, vagy a Katalóguskezelő segítségével megvizsgálhatja azokat a meglévő sorszűrőket és oszlopmaszkokat, amelyek egy adott materializált nézetre vagy streamelési táblára vonatkoznak. Ez a funkció lehetővé teszi a felhasználók számára az adathozzáférési és védelmi intézkedések naplózását és felülvizsgálatát a materializált nézeteken és streamelési táblákon.