Adatsor rögzítése és megtekintése a Unity Catalog használatával
Ez a cikk azt ismerteti, hogyan rögzítheti és vizualizálhatja az adatsorokat a Catalog Explorer, az adatsorrendszer-táblák és a REST API 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, feladatok és irányítópultok. A lineage közel valós időben vizualizálható a Catalog Explorerben, és programozott módon lekérhető a lineage rendszertáblákkal és a Databricks REST API-val.
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.
Az alábbi kép egy minta életútdiagram. A cikk későbbi részében konkrét adatkisorolási funkciókkal és példákkal foglalkozunk.
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 adatéletút Unity katalógus 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árban kell regisztrálni.
A lekérdezéseknek a Spark DataFrame-et (például DataFrame-et visszaadó Spark SQL-függvényeket) vagy 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 származásának megtekintéséhez a felhasználóknak rendelkezniük kell legalább a
BROWSE
tábla vagy nézet szülőkatalógusának jogosultságával. A szülőkatalógusnak a munkaterületről is elérhetőnek kell lennie. Lásd: Katalógushozzáférés korlátozása adott munkaterületekhez.A jegyzetfüzetek, feladatok 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.A Delta-táblák közötti streamelés nyomon követéséhez a Databricks Runtime 11.3 LTS vagy újabb verziójára van szükség.
A Delta Live Tables számítási feladatainak oszlopsorkövetéséhez a Databricks Runtime 13.3 LTS-es vagy újabb verziója szükséges.
Előfordulhat, hogy frissítenie kell a kimenő tűzfalszabályokat, hogy lehetővé tegye az Event Hubs-végponthoz való kapcsolódást az Azure Databricks vezérlősíkon. 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ület régiójához tartozó Event Hubs-végpont lekéréséhez lásd : Metastore, artifact Blob Storage, system tables storage, log Blob Storage és Event Hubs endpoint IP-címek. Az Azure Databricks felhasználó által definiált útvonalainak (UDR) beállításával kapcsolatos információkért lásd: az Azure Databricks felhasználó által definiált útvonalbeállítások.
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ése:
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.
A Katalóguskezelő használata az alábbi lekérdezések által létrehozott életút megtekintéséhez:
Az Azure Databricks-munkaterület felső sávjának Keresőmezőjében keresse meg a táblát
lineage_data.lineagedemo.dinner
, és jelölje ki.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 egy nyílra, amely csomópontokat köt össze a vonaldiagramon a Vonalkapcsolat 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 feladatokat.
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 más nyelv használatával szeretné megtekinteni az életútot, például a Pythont:
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 keresse meg a táblát
lineage_data.lineagedemo.price
, és jelölje ki.Lépjen a Vonalasság lapra, és kattintson a Vonalas diagram megtekintése elemre. Kattintson az ikonokra a lekérdezések által létrehozott adatsor megismeréséhez.
Kattintson egy nyílra, amely csomópontokat köt össze a vonaldiagramon a Vonalkapcsolat 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 feladatokat.
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 sorának megtekintése:
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 keresse meg a táblát
lineage_data.lineagedemo.menu
, és jelölje ki.A Vonalasság lapon 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
Irányítópult létrehozása és az adatsor megtekintése:
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éhezmenu
a felső sáv Keresőmezője is használható.Kattintson a Megnyitás gombra egy irányítópulton.
Jelölje ki az irányítópulthoz hozzáadni kívánt oszlopokat, és kattintson a Létrehozás gombra.
Tegye közzé az irányítópultot.
A rendszer csak a közzétett irányítópultokat követi nyomon az adatsorokban.
A felső sáv Keresőmezőjében keresse meg a táblát
lineage_data.lineagedemo.menu
, és jelölje ki.A Vonalasság lapon kattintson az Irányítópultok elemre. Az irányítópult 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, feladatokat é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ületi objektumokhoz, például jegyzetfüzetekhez, feladatokhoz és irányítópultokhoz való hozzáférés kezeléséről további információt a Hozzáférés-vezérlési listák című témakörben talál.
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.
Életútadatok lekérdezése rendszertáblák használatával
A fogazatrendszertáblák segítségével programozott módon kérdezheti le az életútadatokat. Részletes útmutatásért tekintse meg a használat figyelése rendszertáblákkal és a lineage rendszertáblákkal kapcsolatos referenciákat.
Ha a munkaterület olyan régióban található, amely nem támogatja a sorrendszertáblákat, a Data Lineage REST API-val programozott módon is lekérheti a leendő életútadatokat.
A data lineage REST API használatával lekérheti az életútot
Az adatéletre vonatkozó API lehetővé teszi a tábla- és oszlopsorok lekérését. Ha azonban a munkaterület olyan régióban található, amely támogatja a leendő rendszertáblákat, a REST API helyett rendszertábla-lekérdezéseket kell használnia. A rendszertáblák jobb megoldást jelentenek az életútadatok programozott lekérésére. A legtöbb régió támogatja az életútrendszer-táblákat.
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"
}
]
}
Korlátozások
- Mivel az életút egyéves gördülő időszakon van kiszámítva, a több mint egy é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 és a B tábla közötti kapcsolat csak egy évig jelenik meg. Az egyéves időszakon belül időkeret szerint szűrheti az életútadatokat.
- A Jobs API-kérést
runs submit
használó feladatok 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 oszlopleválasztás csak akkor támogatott, 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 vagy nézetet átneveznek, a rendszer nem rögzíti az átnevezett táblát vagy nézetet.
- Ha egy sémát vagy katalógust átneveznek, a rendszer nem rögzíti a sorokat az átnevezett katalógus vagy séma alatti táblákhoz és nézetekhez.
- Ha Spark SQL-adathalmaz-ellenőrzőpont-készítést használ, a rendszer nem rögzíti az életutat.
- A Unity katalógus a legtöbb esetben a Delta Live Tables feldolgozási sorokból rögzíti az életutat. 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.
- A Lineage nem rögzíti a Stack-függvényeket.
- A globális ideiglenes nézetek nem lesznek rögzítve az életútban.
- Az alatta lévő
system.information_schema
táblák nem lesznek rögzítve az életútban.