Samla in och visa data härkomst med hjälp av Unity Catalog
Den här artikeln beskriver hur du samlar in och visualiserar data härstamning med hjälp av Catalog Explorer, data härkomstsystemet tablesoch REST-API:et.
Du kan använda Unity Catalog för att samla in spårbarhet av körningsdata över frågor som körs på Azure Databricks. Härkomst stöds för alla språk och registreras ned till column-nivån. Härkomstdata omfattar notebook-filer, jobb och instrumentpaneler som är relaterade till frågan. Ursprung kan visualiseras i Catalog Explorer i nära realtid och hämtas programmatiskt med hjälp av ursprungssystemet tables och Databricks REST API.
Kartläggningen sammanställs över alla arbetsytor som är kopplade till ett Unity Catalog-metastore. Det innebär att ursprung som samlas in på en arbetsyta visas på andra arbetsytor som shares metaarkivet. Mer specifikt är tables och andra dataobjekt som registrerats i metaarkivet synliga för användare som har minst BROWSE
behörigheter för dessa objekt, på alla arbetsytor som är kopplade till metaarkivet. Detaljerad information om objekt på arbetsytenivå som notebook-filer och instrumentpaneler på andra arbetsytor är dock maskerad (se Begränsningar och Härkomstbehörigheter).
Ursprungsdata behålls i ett år.
Följande bild är ett exempel på ett härstamningsdiagram. Specifika funktioner och exempel på data härkomst behandlas senare i den här artikeln.
Information om hur du spårar ursprunget för en maskininlärningsmodell finns i Spåra data härstamningen för en modell i Unity Catalog.
Krav
Följande krävs för att fånga datalinje med hjälp av Unity Catalog:
Arbetsytan måste ha Unity Catalog aktiverat.
Tables måste registreras i ett Unity-Catalog metaarkiv.
Frågor måste använda Spark DataFrame (till exempel Spark SQL-funktioner som returnerar en DataFrame) eller Databricks SQL-gränssnitt. Exempel på Databricks SQL- och PySpark-frågor finns i Exempel.
Om du vill visa ursprunget för en table eller vy måste användarna ha minst
BROWSE
behörighet på den överordnade catalog för table eller vyn. Den överordnade catalog måste också vara tillgänglig från arbetsytan. Se Limitcatalog åtkomst till specifika arbetsytor.Om du vill visa ursprungsinformation för notebook-filer, jobb eller instrumentpaneler måste användarna ha behörighet för dessa objekt enligt definitionen i inställningarna för åtkomstkontroll på arbetsytan. Se Ursprungsbehörigheter.
Om du vill visa härstamning för en Unity Catalog-aktiverad pipelinemåste du ha
CAN_VIEW
behörigheter till pipelinen.Ursprungsspårning av strömning mellan Delta tables kräver Databricks Runtime 11.3 LTS eller senare.
Column ursprungsspårning för Delta Live Tables arbetsbelastningar kräver Databricks Runtime 13.3 LTS eller senare.
Du kan behöva update dina utgående brandväggsregler för att tillåta anslutning till Event Hubs-slutpunkten i Azure Databricks-kontrollplanet. Detta gäller vanligtvis om din Azure Databricks-arbetsyta distribueras i ditt eget virtuella nätverk (även kallat VNet-inmatning). Om du vill get Event Hubs-slutpunkten för din arbetsyteregion kan du läsa Metaarkiv, bloblagring för artefakt, system tables lagring, loggbloblagring och IP-adresser för Event Hubs-slutpunkter. Information om hur du konfigurerar användardefinierade vägar (UDR) för Azure Databricks finns i Användardefinierade routningsinställningar för Azure Databricks.
Exempel
Kommentar
I följande exempel används namnet catalog
lineage_data
och namnet schemalineagedemo
. Om du vill använda en annan catalog och schemaändrar du namnen som används i exemplen.För att kunna slutföra det här exemplet måste du ha
CREATE
ochUSE SCHEMA
behörigheter på en schema. En metaarkivadministratör, en catalog-ägare, en schema-ägare eller en användare medMANAGE
-behörigheter på schema kan grant dessa privilegier. Om du till exempel vill ge alla användare i gruppen "data_engineers" behörighet att skapa tables ilineagedemo
schema ilineage_data
catalogkan en användare med någon av ovanstående behörigheter eller roller köra följande frågor:CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
Fånga och utforska ursprung
Så här samlar du in ursprungsdata:
Gå till Azure Databricks-landningssidan, klicka på Ny i sidofältet och selectNotebook- från menyn.
Ange ett namn för notebook-filen och selectSQL i Standardspråk.
I Clusterselect ett kluster med åtkomst till Unity Catalog.
Klicka på Skapa.
I den första notebook-cellen anger du följande frågor:
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
Om du vill köra frågorna klickar du i cellen och trycker på skift+retur eller klickar på och selectKör cell.
Så här använder du Catalog Explorer för att visa datalinjen som skapas av dessa frågor:
I rutan Search i det övre fältet på Azure Databricks-arbetsytan söker du efter
lineage_data.lineagedemo.dinner
table och select den.Select fliken Lineage. Ursprungspanelen visas och visar relaterade tables (i det här exemplet är det
menu
table).Om du vill visa ett interaktivt diagram över data härstamningen klickar du på Visa ursprungsdiagram. Som standard visas en nivå i diagrammet. Klicka på plusteckenikonen på en nod för att visa fler connections om de är tillgängliga.
Klicka på en pil som ansluter noder i ursprungsdiagrammet för att öppna anslutningspanelen För ursprung. Panelen Lineage-anslutning visar information om anslutningen, inklusive käll- och mål-tables, notebook-filer och jobb.
Om du vill visa anteckningsboken som är associerad med
dinner
tableselect du anteckningsboken i Lineage-anslutningen panelen eller stänger ursprungsdiagrammet och klickar på Notebook-filer. Om du vill öppna anteckningsboken på en ny flik klickar du på anteckningsbokens namn.Om du vill visa härkomsten på nivån av columnklickar du på en column i diagrammet för att visa länkar till relaterade columns. Till exempel, om du klickar på "full_menu" column, visas det ursprungliga columns som column härleddes från.
Om du vill visa ursprung med ett annat språk, till exempel Python:
Öppna anteckningsboken som du skapade tidigare, skapa en ny cell och ange följande Python-kod:
%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")
Kör cellen genom att klicka i cellen och trycka på Skift+Retur eller klicka och välja Kör cell.
I rutan Search i det övre fältet på Azure Databricks-arbetsytan söker du efter
lineage_data.lineagedemo.price
table och select den.Gå till fliken Ursprung och klicka på Visa ursprungsdiagram. Klicka på ikonerna för att utforska data härstamningen som genereras av frågorna.
Klicka på en pil som ansluter noder i ursprungsdiagrammet för att öppna anslutningspanelen För ursprung. Panelen Lineage-anslutning visar information om anslutningen, inklusive käll- och mål-tables, notebook-filer och jobb.
Avbilda och visa arbetsflödets ursprung
Härledning samlas också in för alla arbetsflöden som läser eller skriver till Unity Catalog. Så här visar du ursprung för ett Azure Databricks-arbetsflöde:
Klicka på Ny i sidofältet och selectNotebook- från menyn.
Ange ett namn för notebook-filen och selectSQL i Standardspråk.
Klicka på Skapa.
I den första notebook-cellen anger du följande fråga:
SELECT * FROM lineage_data.lineagedemo.menu
Klicka på Schemalägg i det övre fältet. I schema-dialogrutan selectManuellselect ett kluster med åtkomst till Unity Catalogoch klicka på Skapa.
Klicka på Kör nu.
I rutan Search i det övre fältet på Azure Databricks-arbetsytan söker du efter
lineage_data.lineagedemo.menu
table och select den.På fliken Ursprung klickar du på Arbetsflödenoch select fliken nedströms. Jobbnamnet visas under jobbnamn som konsument av
menu
table.
Avbilda och visa instrumentpanelens ursprung
Så här skapar du en instrumentpanel och visar dess data härkomst:
Gå till azure Databricks-landningssidan och öppna Catalog Explorer genom att klicka på Catalog i sidofältet.
Klicka på namnet på catalog, klicka på lineagedemooch select
menu
table. Du kan också använda rutan Sök i det övre fältet för att söka eftermenu
table.Klicka på Öppna på en instrumentpanel.
Select columns som du vill lägga till på instrumentpanelen och klicka på Skapa.
Publicera instrumentpanelen.
Endast publicerade instrumentpaneler spåras i data härkomst.
I rutan Sök i det övre fältet söker du efter
lineage_data.lineagedemo.menu
table och select den.På fliken Ursprung klickar du på Instrumentpaneler. Instrumentpanelen visas under instrumentpanelsnamn som konsument av menyn table.
Ursprungsbehörigheter
Härstamningsdiagram delar samma behörighetsmodell som Unity Catalog.
Tables och andra dataobjekt som registrerats i metaarkivet Unity Catalog är endast synliga för användare som har minst BROWSE
behörigheter för dessa objekt. Om en användare inte har BROWSE
eller SELECT
behörighet på en tablekan de inte utforska dess ursprung. Härkomstdiagram visar Unity Catalog-objekt i alla arbetsytor som är anslutna till metaarkivet, så länge användaren har tillräckliga objektbehörigheter.
Kör till exempel följande kommandon för userA
:
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
När de tittar på userA
views ursprungsdiagrammet för lineage_data.lineagedemo.menu
table, kommer de att se menu
table. De kommer inte att kunna se information om associerade tables, till exempel den underordnade lineage_data.lineagedemo.dinner
table.
dinner
table visas som en masked
nod på skärmen för userA
, och userA
kan inte expandera diagrammet för att visa nedströms tables från tables som de inte har behörighet att få åtkomst till.
Om du kör följande kommando för att grantBROWSE
behörighet att userB
, kan användaren visa ursprungsdiagrammet för alla table i lineage_data
schema.
GRANT BROWSE on lineage_data to `userB@company.com`;
På samma sätt måste genealogianvändare ha specifika behörigheter för att visa arbetsytans objekt som anteckningsböcker, jobb och instrumentpaneler. Dessutom kan de bara se detaljerad information om arbetsyteobjekt när de är inloggade på arbetsytan där objekten skapades. Detaljerad information om objekt på arbetsplatsnivå i andra arbetsplatser döljs i släktdiagrammet.
Mer information om hur du hanterar åtkomst till skyddsbara objekt i Unity Catalogfinns i Hantera privilegier i Unity Catalog. Mer information om hur du hanterar åtkomst till arbetsyteobjekt som notebook-filer, jobb och instrumentpaneler finns i Åtkomstkontrollistor.
Ta bort ursprungsdata
Varning
Följande instruktioner tar bort alla objekt som lagras i Unity Catalog. Använd endast dessa instruktioner om det behövs. Till exempel för att uppfylla efterlevnadskraven.
Om du vill ta bort ursprungsdata måste du ta bort metaarkivet som hanterar Unity-Catalog objekt. Mer information om hur du tar bort metaarkivet finns i Ta bort ett metaarkiv. Data tas bort inom 90 dagar.
Fråga efter härstamningsdata med hjälp av system tables
Du kan använda ursprungssystemet tables för att programmatiskt fråga efter ursprungsdata. För detaljerade instruktioner, se Övervaka kontoaktivitet med system tables och Lineagesystem tables referens.
Om din arbetsyta finns i en region som inte stöder härkomstsystem tableskan du istället också använda REST-API:et för datahärkomst för att programmatiskt hämta härkomstdatan.
Hämta ursprung med hjälp av REST-API:et för data härkomst
Datalinje-API:et låter dig hämta table och column härkomst. Men om din arbetsyta finns i en region som stöder ursprungssystemet tablesbör du använda system table-förfrågningar i stället för REST-API:et. System tables är ett bättre alternativ för programmatisk hämtning av ursprungsdata. De flesta regioner stöder linjeagesystemet tables.
Viktigt!
För att få åtkomst till Databricks REST API:er måste du autentisera.
Hämta table ursprung
Det här exemplet hämtar ursprungsdata för dinner
table.
Förfrågan
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}'
Ersätt <workspace-instance>
.
I det här exemplet används en .netrc-fil .
Response
{
"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
}
]
}
]
}
Hämta column ursprung
Det här exemplet hämtar column data för dinner
table.
Förfrågan
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"}'
Ersätt <workspace-instance>
.
I det här exemplet används en .netrc-fil .
Response
{
"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"
}
]
}
Begränsningar
Även om härstamning aggregeras för alla arbetsytor som är kopplade till samma Unity Catalog metaarkiv, är detaljer om arbetsyteobjekt som anteckningsböcker och instrumentpaneler endast synliga i den arbetsyta där de skapades.
Eftersom härstamning beräknas på ett rullande ettårs windowvisas inte härstamning som samlats in för mer än ett år sedan. Om till exempel ett jobb eller en fråga läser data från table A och skriver till table B, visas länken mellan table A och table B endast i ett år. Du kan filtrera ursprungsdata efter tidsram inom ett års window.
Jobb som använder jobb-API-begäran
runs submit
är inte tillgängliga när du visar ursprung. Table och column nivå härstamning registreras fortfarande när du använderruns submit
begäran, men länken till körningen registreras inte.Unity Catalog fångar släktskap upp till column-nivån så mycket som möjligt. Det finns dock vissa fall där härstamning på wherecolumn-nivå inte kan fångas in.
Column härstamning stöds endast när både källan och målet refereras med table namn (exempel:
select * from <catalog>.<schema>.<table>
). Column-härkomst kan inte fångas om källan eller målet adresseras via sökväg (exempel:select * from delta."s3://<bucket>/<path>"
).Om en table eller vy har bytt namn registreras inte ursprung för den omdöpta table eller vyn.
Om en schema eller catalog har bytt namn registreras inte ursprung för tables och views under den omdöpta catalog eller schema.
Om du använder Kontrollpunkter för Spark SQL-datauppsättning samlas inte ursprunget in.
Unity Catalog registrerar ursprung från Delta Live Tables pipelines i de flesta fall. I vissa fall kan dock fullständig härkomsttäckning inte garanteras, till exempel när pipelines använder APPLY CHANGES API eller TEMPORARY tables.
Ursprunget avbildar inte Stack-funktioner.
Globala temp-views registreras inte i ursprung.
Tables under
system.information_schema
fångas inte i härstamning.Fullständig column-nivå härstamning samlas inte in som standard för
MERGE
åtgärder.Du kan aktivera ursprungsinsamling för
MERGE
åtgärder genom att ange egenskapenspark.databricks.dataLineage.mergeIntoV2Enabled
Spark tilltrue
. Om du aktiverar den här flaggan kan du sänka frågeprestandan, särskilt i arbetsbelastningar som omfattar mycket omfattande tables.