Adatsor rögzítése és megtekintése a Unity Catalog használatával
A Unity Catalog használatával rögzítheti a futtatókörnyezeti adatsorokat az Azure Databricksen futtatott lekérdezések között. A vonalasság minden nyelv esetében támogatott, és az oszlopszintig rögzítve van. Az életútadatok közé tartoznak a lekérdezéshez kapcsolódó jegyzetfüzetek, munkafolyamatok és irányítópultok. A lineage közel valós időben vizualizálható a Catalog Explorerben, és lekérhető a Databricks REST API-val.
Feljegyzés
A leállási adatokat a leállási rendszertáblák (Nyilvános előzetes verzió) használatával is megtekintheti és lekérdezheti. További információ: Lineage system tables reference.
A rendszer a Unity Catalog-metaadattárhoz csatolt összes munkaterületen összesíti az adatsorokat. Ez azt jelenti, hogy az egyik munkaterületen rögzített vonal minden más munkaterületen látható, amely a metaadattárat osztja meg. A felhasználóknak a megfelelő engedélyekkel kell rendelkezniük az életútadatok megtekintéséhez. Az életútadatok 1 évig maradnak meg.
Ez a cikk bemutatja, hogyan jeleníthet meg életútot a Catalog Explorer és a REST API használatával. A gépi tanulási modellek életútjának nyomon követésével kapcsolatos információkért tekintse meg a modell adatsorának nyomon követését a Unity Katalógusban.
Követelmények
Az adatsorok Unity Catalog használatával történő rögzítéséhez a következőkre van szükség:
A munkaterületen engedélyezve kell lennie a Unity-katalógusnak.
A táblákat egy Unity-katalógus metaadattárában kell regisztrálni.
A lekérdezéseknek a Spark DataFrame-et (például a DataFrame-et visszaadó Spark SQL-függvényeket) vagy a Databricks SQL-interfészeket kell használniuk. Példák a Databricks SQL- és PySpark-lekérdezésekre: Példák.
Egy tábla vagy nézet életútjának megtekintéséhez a felhasználóknak rendelkezniük kell legalább a
BROWSE
tábla vagy a nézet szülőkatalógusának jogosultságával.A jegyzetfüzetek, munkafolyamatok vagy irányítópultok életútadatainak megtekintéséhez a felhasználóknak engedélyekkel kell rendelkezniük ezekhez az objektumokhoz a munkaterület hozzáférés-vezérlési beállításainak megfelelően. Lásd: Életútengedélyek.
A Unity-katalógusban engedélyezett folyamatokhoz tartozó leállás megtekintéséhez engedélyekkel kell rendelkeznie
CAN_VIEW
a folyamathoz.Előfordulhat, hogy frissítenie kell a kimenő tűzfalszabályokat, hogy az Azure Databricks vezérlősíkon lehetővé tegye az Event Hub-végponthoz való kapcsolódást. Ez általában akkor érvényes, ha az Azure Databricks-munkaterület a saját virtuális hálózatában van üzembe helyezve (más néven VNet-injektálás). A munkaterületi régió Event Hub-végpontjának lekéréséhez lásd : Metastore, artifact Blob Storage, system tables storage, log Blob Storage és Event Hub endpoint IP-címek. Az Azure Databricks felhasználó által definiált útvonalainak beállításával kapcsolatos információkért lásd az Azure Databricks felhasználó által definiált útvonalbeállításait.
Korlátozások
A Delta-táblák közötti streamelés csak a Databricks Runtime 11.3 LTS vagy újabb verziójában támogatott.
Mivel az életút egy 1 éves gördülő időszakon van kiszámítva, a több mint 1 évvel ezelőtt gyűjtött életút nem jelenik meg. Ha például egy feladat vagy lekérdezés adatokat olvas be az A táblából, és a B táblába ír, az A tábla és a B tábla közötti kapcsolat csak 1 évig jelenik meg.
Időkeret szerint szűrheti az életútadatokat. A "Minden ág" kiválasztásakor a 2023 júniusától összegyűjtött életútadatok jelennek meg.
A Jobs API-kérést
runs submit
használó munkafolyamatok nem érhetők el a leállás megtekintésekor. A rendszer továbbra is rögzíti a tábla- és oszlopszintű leválasztást aruns submit
kérelem használatakor, de a futtatásra mutató hivatkozást nem rögzíti a rendszer.A Unity Catalog, amennyire csak lehet, oszlopszinten rögzíti az életutat. Vannak azonban olyan esetek, amelyekben nem rögzíthető oszlopszintű életút.
Az oszlopsorok csak akkor támogatottak, ha a forrásra és a célra táblanév hivatkozik (példa:
select * from <catalog>.<schema>.<table>
). Az oszlopsor nem rögzíthető, ha a forrás vagy a cél elérési útja (példa:select * from delta."s3://<bucket>/<path>"
).Ha egy táblát átneveznek, az átnevezett táblára vonatkozó életút nem rögzül.
Ha Spark SQL-adathalmaz-ellenőrzőpontozást használ, a rendszer nem rögzíti az adatsorokat. Lásd pyspark.sql.DataFrame.checkpointot az Apache Spark dokumentációjában.
A Unity Catalog a legtöbb esetben a Delta Live Tables-folyamatokból rögzíti a családokat. Bizonyos esetekben azonban nem garantálható a teljes leállás, például amikor a folyamatok az APPLY CHANGES API-t vagy az IDEIGLENES táblákat használják.
Példák
Feljegyzés
Az alábbi példák a katalógus nevét
lineage_data
és a sémanevetlineagedemo
használják. Ha másik katalógust és sémát szeretne használni, módosítsa a példákban használt neveket.A példa végrehajtásához rendelkeznie
CREATE
kell egy sémán lévő jogosultságokkal ésUSE SCHEMA
jogosultságokkal. A metaadattár rendszergazdája, katalógustulajdonosa vagy sématulajdonosa engedélyezheti ezeket a jogosultságokat. Ha például a csoport összes felhasználójának "data_engineers" engedélyt szeretne adni táblák létrehozására alineagedemo
lineage_data
katalógus sémájában, a fenti jogosultságok vagy szerepkörök egyikével rendelkező felhasználó a következő lekérdezéseket futtathatja:CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
Az életút rögzítése és felfedezése
Az életútadatok rögzítéséhez kövesse az alábbi lépéseket:
Nyissa meg az Azure Databricks kezdőlapját, kattintson az Oldalsáv Új gombjára, és válassza a Jegyzetfüzet lehetőséget a menüben.
Adja meg a jegyzetfüzet nevét, és válassza az SQL-t az alapértelmezett nyelven.
A fürtben válasszon ki egy, a Unity Katalógushoz hozzáféréssel rendelkező fürtöt.
Kattintson a Létrehozás gombra.
Az első jegyzetfüzetcellában adja meg a következő lekérdezéseket:
CREATE TABLE IF NOT EXISTS lineage_data.lineagedemo.menu ( recipe_id INT, app string, main string, dessert string ); INSERT INTO lineage_data.lineagedemo.menu (recipe_id, app, main, dessert) VALUES (1,"Ceviche", "Tacos", "Flan"), (2,"Tomato Soup", "Souffle", "Creme Brulee"), (3,"Chips","Grilled Cheese","Cheesecake"); CREATE TABLE lineage_data.lineagedemo.dinner AS SELECT recipe_id, concat(app," + ", main," + ",dessert) AS full_menu FROM lineage_data.lineagedemo.menu
A lekérdezések futtatásához kattintson a cellára, és nyomja le a Shift+Enter billentyűkombinációt, vagy kattintson a Cella futtatása parancsra.
Ha a Katalóguskezelővel meg szeretné tekinteni a lekérdezések által létrehozott életútot, kövesse az alábbi lépéseket:
Az Azure Databricks-munkaterület felső sávjának Keresőmezőjében adja meg
lineage_data.lineagedemo.dinner
és kattintson a Databricksben a Keresés lineage_data.lineagedemo.dinner elemre.A Táblák területen kattintson a táblára
dinner
.Válassza a Lineage (Életút ) lapot. Megjelenik a fogazatpanel, és megjeleníti a kapcsolódó táblákat (ebben a példában ez a
menu
tábla).Az adatsor interaktív gráfjának megtekintéséhez kattintson a Lineage Graph megtekintése gombra. Alapértelmezés szerint egy szint jelenik meg a grafikonon. A csomópont ikonra kattintva további kapcsolatokat jeleníthet meg, ha elérhetők.
Kattintson a vonaldiagram csomópontjait összekötő nyílra a Vonalas kapcsolat panel megnyitásához. A Kapcsolat panelen a kapcsolat részletei láthatók, beleértve a forrás- és céltáblákat, a jegyzetfüzeteket és a munkafolyamatokat.
A táblázathoz
dinner
társított jegyzetfüzet megjelenítéséhez jelölje ki a jegyzetfüzetet a Vonalas kapcsolat panelen, vagy zárja be a vonalas gráfot, és kattintson a Jegyzetfüzetek elemre. A jegyzetfüzet új lapon való megnyitásához kattintson a jegyzetfüzet nevére.Az oszlopszintű vonal megtekintéséhez kattintson a diagram egyik oszlopára a kapcsolódó oszlopokra mutató hivatkozások megjelenítéséhez. Ha például a "full_menu" oszlopra kattint, az az oszlopból származtatott felsőbb rétegbeli oszlopokat jeleníti meg:
Ha egy másik nyelvvel, például Pythonnal szeretné bemutatni az életút létrehozását és megtekintését, kövesse az alábbi lépéseket:
Nyissa meg a korábban létrehozott jegyzetfüzetet, hozzon létre egy új cellát, és írja be a következő Python-kódot:
%python from pyspark.sql.functions import rand, round df = spark.range(3).withColumn("price", round(10*rand(seed=42),2)).withColumnRenamed("id","recipe_id") df.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.price") dinner = spark.read.table("lineage_data.lineagedemo.dinner") price = spark.read.table("lineage_data.lineagedemo.price") dinner_price = dinner.join(price, on="recipe_id") dinner_price.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.dinner_price")
Futtassa a cellát a cellára kattintva, majd nyomja le a Shift+Enter billentyűkombinációt, vagy kattintson a Cella futtatása parancsra.
Az Azure Databricks-munkaterület felső sávjának Keresőmezőjében adja meg
lineage_data.lineagedemo.price
és kattintson a Databricksben a Search lineage_data.lineagedemo.price kifejezésre.A Táblák területen kattintson a táblára
price
.Jelölje ki a Vonalasság lapot, és kattintson a Vonalas gráf megtekintése elemre. Az ikonokra kattintva megismerheti az SQL- és Python-lekérdezések által létrehozott adatsorokat.
Kattintson a vonaldiagram csomópontjait összekötő nyílra a Vonalas kapcsolat panel megnyitásához. A Kapcsolat panelen a kapcsolat részletei láthatók, beleértve a forrás- és céltáblákat, a jegyzetfüzeteket és a munkafolyamatokat.
Munkafolyamat-életút rögzítése és megtekintése
A rendszer minden olyan munkafolyamathoz is rögzítve lesz, amely a Unity Katalógusba olvas vagy ír. Az Azure Databricks-munkafolyamatok életútjának megtekintéséhez kövesse az alábbi lépéseket:
Kattintson az Oldalsáv Új elemére, és válassza a Jegyzetfüzet lehetőséget a menüből.
Adja meg a jegyzetfüzet nevét, és válassza az SQL-t az alapértelmezett nyelven.
Kattintson a Létrehozás gombra.
Az első jegyzetfüzetcellában adja meg a következő lekérdezést:
SELECT * FROM lineage_data.lineagedemo.menu
Kattintson az Ütemezés gombra a felső sávon. Az ütemezési párbeszédpanelen válassza a Manuális lehetőséget, válasszon ki egy, a Unity Katalógushoz hozzáféréssel rendelkező fürtöt, és kattintson a Létrehozás gombra.
Kattintson a Futtatás most parancsra.
Az Azure Databricks-munkaterület felső sávjának Keresőmezőjében adja meg
lineage_data.lineagedemo.menu
és kattintson a Databricksben a Keresés lineage_data.lineagedemo.menu parancsra.A Táblák nézet az összes táblában kattintson a táblára
menu
.Válassza a Lineage lapot, kattintson a Munkafolyamatok elemre, és válassza az Alsóbb réteg fület. A feladat neve a feladat neve alatt jelenik meg a
menu
tábla fogyasztójaként.
Irányítópult-életút rögzítése és megtekintése
Az SQL-irányítópultok életútjának megtekintéséhez kövesse az alábbi lépéseket:
- Nyissa meg az Azure Databricks kezdőlapját, és nyissa meg a Katalóguskezelőt az oldalsáv Katalógus gombjára kattintva.
- Kattintson a katalógus nevére, kattintson a lineagedemo elemre, és válassza ki a táblát
menu
. A tábla kereséséhez használhatja a felső sáv Tábla keresése szövegmezőtmenu
is. - Kattintson a Műveletek > gyors irányítópult létrehozása elemre.
- Jelölje ki az irányítópulthoz hozzáadni kívánt oszlopokat, majd kattintson a Létrehozás gombra.
- Az Azure Databricks-munkaterület felső sávjának Keresőmezőjében adja meg
lineage_data.lineagedemo.menu
és kattintson a Databricksben a Keresés lineage_data.lineagedemo.menu parancsra. - A Táblák nézet az összes táblában kattintson a táblára
menu
. - Válassza a Vonalasság lapot, és kattintson az Irányítópultok elemre. Az irányítópult neve az Irányítópult neve területen jelenik meg a menütábla fogyasztójaként.
Életútengedélyek
A vonaldiagramok ugyanazzal az engedélymodellel rendelkeznek, mint a Unity Catalog. Ha egy felhasználó nem rendelkezik a BROWSE
táblán lévő jogosultsággal vagy SELECT
jogosultsággal, nem tudja felderíteni az életútot. Emellett a felhasználók csak olyan jegyzetfüzeteket, munkafolyamatokat és irányítópultokat láthatnak, amelyek megtekintéséhez engedéllyel rendelkeznek. Ha például a következő parancsokat futtatja egy nem rendszergazda userA
felhasználó számára:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
Amikor userA
megtekinti a lineage_data.lineagedemo.menu
táblázathoz tartozó életútdiagramot, látni fogják a táblát menu
. Nem fognak tudni információkat látni a társított táblákról, például az alsóbb rétegbeli lineage_data.lineagedemo.dinner
tábláról. A dinner
tábla csomópontként masked
jelenik meg a megjelenítési userA
területen, és userA
nem tudja kibontani a diagramot, hogy az alsóbb rétegbeli táblákat olyan táblákból jelenítse meg, amelyekhez nincs hozzáférésük.
Ha a következő parancsot futtatja, hogy engedélyt adjon egy BROWSE
nem rendszergazda felhasználónak userB
:
GRANT BROWSE on lineage_data to `userA@company.com`;
userB
mostantól megtekintheti a séma bármely táblázatának életúti gráfját lineage_data
.
A Biztonságos objektumokhoz való hozzáférés a Unity Katalógusban való kezelésével kapcsolatos további információkért tekintse meg a Jogosultságok kezelése a Unity Katalógusban című témakört. A munkaterület-objektumok, például jegyzetfüzetek, munkafolyamatok és irányítópultok hozzáférésének kezelésével kapcsolatos további információkért tekintse meg a Hozzáférés-vezérlési listákat.
Az életút adatainak törlése
Figyelmeztetés
Az alábbi utasítások törlik a Unity Catalogban tárolt összes objektumot. Ezeket az utasításokat csak akkor használja, ha szükséges. Például a megfelelőségi követelmények teljesítéséhez.
Az életútadatok törléséhez törölnie kell a Unity-katalógus objektumait kezelő metaadattárat. A metaadattár törléséről további információt a Metaadattár törlése című témakörben talál. Az adatok 90 napon belül törlődnek.
Adatéletrehozás API
Az adatéletre vonatkozó API lehetővé teszi a tábla- és oszlopsorok lekérését.
Fontos
A Databricks REST API-k eléréséhez hitelesítenie kell.
Táblasor lekérése
Ez a példa lekéri a tábla életútadatait dinner
.
Kérés
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/table-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "include_entity_lineage": true}'
Cserélje le a elemet <workspace-instance>
.
Ez a példa egy .netrc-fájlt használ.
Válasz
{
"upstreams": [
{
"tableInfo": {
"name": "menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
],
"downstreams": [
{
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
},
{
"tableInfo": {
"name": "dinner_price",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
]
}
Oszlopsor lekérése
Ez a példa a tábla oszlopadatait dinner
kéri le.
Kérés
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/column-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "column_name": "dessert"}'
Cserélje le a elemet <workspace-instance>
.
Ez a példa egy .netrc-fájlt használ.
Válasz
{
"upstream_cols": [
{
"name": "dessert",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "main",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "app",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
}
],
"downstream_cols": [
{
"name": "full_menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "dinner_price",
"table_type": "TABLE"
}
]
}