A Unity Catalog használata DLT-folyamatokkal
Fontos
A Unity Cataloghoz kapcsolódó DLT-támogatás a nyilvános előzetes verzióbantalálható.
A Databricks javasolja a DLT-folyamatok konfigurálását a Unity Catalog használatával.
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.
Jegyzet
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 csővezetékek 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ökölt).
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
ésUSE SCHEMA
jogosultságokat kell biztosítani, ha a folyamat materializált nézeteket hoz létre. -
CREATE TABLE
ésUSE 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.
Unity Catalog-kompatibilis folyamat futtatásához szükséges számítás:
- Standard hozzáférési mód (korábban megosztott hozzáférési mód). A Unity-katalógust használó folyamatok nem futtathatók dedikált (korábban egyfelhasználós) számításon. Lásd A Unity Catalogstandard hozzáférési módra vonatkozó korlátozásait.
A Unity Catalog használatával létrehozott DLT-folyamat által létrehozott táblák lekérdezéséhez szükséges számítás (beleértve a streamelési táblákat és a materializált nézeteket) az alábbiak bármelyikét tartalmazza:
- 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ási erőforráson (korábbi nevén egyfelhasználós számítás).
- 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 és a DLT használata esetén a következők a korlátozások:
- Alapértelmezés szerint csak a folyamat tulajdonosa és a munkaterület rendszergazdái tekinthetik meg az illesztőprogram-naplókat a Unity Catalog-kompatibilis folyamatot futtató számításból. Ha engedélyezni szeretné, hogy más felhasználók hozzáférjenek az illesztőprogram-naplókhoz, tekintse meg a A nem rendszergazdai felhasználók megtekinthetik az illesztőprogram-naplókat egy Unity Katalógus-kompatibilis folyamatból.
- A Hive metaadattárat használó 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 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. Lásd: Frissítés jogosultságöröklésre.
- A JAR-ek nincsenek támogatva. Csak külső Python-kódtárak támogatottak. Lásd: Python-függőségek kezelése DLT-folyamatokhoz.
- A streamelési tábla sémáját módosító adatmanipulációs nyelvi (DML-) lekérdezések nem támogatottak.
- A DLT-folyamatban létrehozott materializált nézet nem használható streamforrásként az adott 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 Python UDF támogatása nyilvános előzetes verzióban.
- A Delta Sharing nem használható a Unity Catalogban közzétett DLT-materializált nézettel vagy streamelő táblával.
Jegyzet
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ített COUNT DISTINCT
záradékot tartalmazza, a mögöttes fájlok tartalmazzák a field_a
tényleges értékeinek listáját.
Használhatom együtt a Hive metaadattárat és a Unity Catalog-folyamatokat?
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, az összes meglévő adatforrás és DLT-funkció támogatott a Unity Catalogot használó folyamatokkal. A Python- és SQL-interfészek egyaránt támogatottak a Unity Catalogot használó folyamatokkal.
Meglévő funkciók módosítása
Ha a DLT úgy van konfigurálva, hogy adatokat őrizze meg a Unity Catalogban, a DLT-folyamat kezeli a tábla életciklusát és engedélyeit. Ennek eredménye:
- Amikor eltávolít egy táblát a folyamatdefinícióbó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. Az inaktív táblák továbbra is lekérdezhetők, de nem frissülnek. A materializált nézetek vagy streamelési táblák törléséhez explicit módon
DROP
a táblát.- Az eldobott táblákat 7 napon belül helyreállíthatja a
UNDROP
paranccsal. - 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.
- Az eldobott táblákat 7 napon belül helyreállíthatja a
- A DLT-folyamat törlése az adott folyamatban definiált összes tábla törlését eredményezi. A módosítás miatt a DLT felhasználói felülete frissül, hogy felszólítson a folyamat törlésének megerősítésére.
- A belső háttértáblák, beleértve a
APPLY CHANGES INTO
támogatásához használt táblákat, nem érhetők el közvetlenül a felhasználók számára.
Táblák írása a Unity Katalógusba egy DLT-folyamatból
Ha a táblákat a Unity Catalogba szeretné írni, konfigurálnia kell a folyamatot, hogy a munkaterületen keresztül működjön vele. 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 további információért lásd: Mik azok a katalógusok az Azure Databricksben?. A Unity Catalog sémáiról szóló információkért lásd a Mik azok a sémák az Azure Databricksben?.
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;
Piton
@dlt.table
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);
Piton
@dlt.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
hive_metastore.some_schema.table;
Piton
@dlt.table
def table3():
return spark.read.table("hive_metastore.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"
)
Piton
@dlt.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 DLT-folyamatok tábláinak vonalai a Katalóguskezelőben láthatók. 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 származásáról további információt a Adatvonal rögzítése és megtekintése a Unity Cataloghasználatával című témakörben talál.
A Unity Catalog-kompatibilis DLT-folyamatok materializált nézetei vagy streamelési táblái esetében a Catalog Explorer termékoldali felhasználói felülete a materializált nézetet vagy streamelési táblát előállító folyamatra is hivatkozik, 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
Az adatmanipulációs nyelvi (DML) utasítások , például beszúrási, frissítési, törlési és egyesítési utasítások használatával módosíthatja a Unity Catalogban közzétett streamtáblákat. 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.
Jegyzet
- 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 (amely nem rendelkezik csak hozzáfűzési korlátozással).
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
Fontos
Ez a funkció nyilvános előzetes verzióbanvan.
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.
Oszlopmaszkok lehetővé teszik az oszlopok értékeinek maszkolását, amikor egy táblavizsgálat sorokat olvas be. 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: Bizalmas táblaadatok szűrése sorszűrők és oszlopmaszkok használatával.
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 DLT SQL nyelvi referencia és DLT Python nyelvi referencia.
Magatartás
A sorszűrők vagy oszlopmaszkok DLT-folyamatokban való 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
ésIS_MEMBER
) kiértékelése a folyamat tulajdonosának felhasználói környezetével történik. -
Lekérdezési: A materializált nézet vagy streaming tábla lekérdezésekor a rendszer a felhasználói környezetet ellenőrző függvényeket (például
CURRENT_USER
ésIS_MEMBER
) a meghívó felhasználói környezet alapján értékeli ki. 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. - Amikor sorszűrőket és oszlopmaszkokat tartalmazó forrástáblákon hoz létre materializált nézeteket, a materializált nézet frissítése mindig teljes frissítés. A teljes frissítés a forrásban elérhető összes adatot a legújabb definíciókkal dolgozza fel újra. Ez a folyamat ellenőrzi, hogy a forrástáblák biztonsági szabályzatai kiértékelése és alkalmazása a legup-tonaprakész adatokkal és meghatározásokkal történik-e.
Megfigyelhetőség
Az DESCRIBE EXTENDED
, a INFORMATION_SCHEMA
vagy a Katalóguskezelő használatával vizsgálja meg 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.