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 a runs 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émanevet lineagedemohaszná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 és USE 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 a lineagedemolineage_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:

  1. Nyissa meg az Azure Databricks kezdőlapját, kattintson az Oldalsáv Új gombjáraÚj ikon, és válassza a Jegyzetfüzet lehetőséget a menüben.

  2. Adja meg a jegyzetfüzet nevét, és válassza az SQL-t az alapértelmezett nyelven.

  3. A fürtben válasszon ki egy, a Unity Katalógushoz hozzáféréssel rendelkező fürtöt.

  4. Kattintson a Létrehozás gombra.

  5. 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
    
  6. A lekérdezések futtatásához kattintson a cellára, és nyomja le a Shift+Enter billentyűkombinációt, vagy kattintson Futtatási menü 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:

  1. 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.

  2. A Táblák területen kattintson a tábláradinner.

  3. 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).

  4. 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 Pluszjel ikon további kapcsolatokat jeleníthet meg, ha elérhetők.

  5. 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.

    Vonalas gráf

  6. 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.

  7. 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:

    Teljes menü oszlopsor

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:

  1. 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")
    
  2. Futtassa a cellát a cellára kattintva, majd nyomja le a Shift+Enter billentyűkombinációt, vagy kattintson Futtatási menü a Cella futtatása parancsra.

  3. 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.

  4. A Táblák területen kattintson a tábláraprice.

  5. Jelölje ki a Vonalasság lapot, és kattintson a Vonalas gráf megtekintése elemre. Az ikonokra kattintva Pluszjel ikon megismerheti az SQL- és Python-lekérdezések által létrehozott adatsorokat.

    Bővített vonaldiagram

  6. 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:

  1. Kattintson Új ikonaz Oldalsáv Új elemére, és válassza a Jegyzetfüzet lehetőséget a menüből.

  2. Adja meg a jegyzetfüzet nevét, és válassza az SQL-t az alapértelmezett nyelven.

  3. Kattintson a Létrehozás gombra.

  4. Az első jegyzetfüzetcellában adja meg a következő lekérdezést:

    SELECT * FROM lineage_data.lineagedemo.menu
    
  5. 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.

  6. Kattintson a Futtatás most parancsra.

  7. 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.

  8. A Táblák nézet az összes táblában kattintson a táblára menu .

  9. 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:

  1. Nyissa meg az Azure Databricks kezdőlapját, és nyissa meg a Katalóguskezelőt az oldalsáv Katalógus gombjára kattintva.
  2. 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őt menu is.
  3. Kattintson a Műveletek > gyors irányítópult létrehozása elemre.
  4. Jelölje ki az irányítópulthoz hozzáadni kívánt oszlopokat, majd kattintson a Létrehozás gombra.
  5. 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.
  6. A Táblák nézet az összes táblában kattintson a táblára menu .
  7. 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 userAfelhaszná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 userAterü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"
    }
  ]
}