用Unity Catalog捕獲和查看數據沿襲
你可以使用Unity Catalog來捕獲在Databricks上運行的查詢的運行時數據沿襲。所有語言都支持沿襲,並捕獲到列級別。沿襲數據包括與查詢相關的筆記本、工作流和儀表板。血統可以在Data Explorer中近乎實時地可視化,並使用Databricks REST API進行檢索。
Lineage是在所有工作空間中聚合到一個Unity Catalog metastore上的。這意味著在一個工作空間中捕獲的譜係在共享該轉移的任何其他工作空間中都是可見的。用戶必須具有查看沿襲數據的正確權限。沿襲數據保留30天。
本文描述了使用Data Explorer和REST API可視化沿襲。
限製
隻有在Databricks Runtime 11.2或更高版本中才支持Delta表之間的流。
當數據直接寫入雲存儲中的文件時,即使在雲存儲位置定義了表,也不會捕獲沿襲。例如,
spark.write.save(“s3: / / mybucket / mytable /”)
不會產生血統。由於沿襲是在30天滾動窗口中計算的,因此不會顯示超過30天的沿襲。例如,如果作業或查詢從表a讀取數據並寫入表B,則表a和表B之間的鏈接僅顯示30天。
使用Jobs API的工作流
運行提交
查看沿襲時,請求不可用。屬性時仍然捕獲表和列級沿襲運行提交
請求,但未捕獲到運行的鏈接。Delta Live Tables管道沒有捕獲沿襲。
Unity Catalog盡可能多地捕獲到列級別的沿襲。然而,在某些情況下,無法捕獲列級沿襲。
如果重命名表,則不會捕獲重命名表的沿襲。
例子
請注意
以下示例使用目錄名稱
lineage_data
以及模式名稱lineagedemo
.要使用不同的目錄和模式,請更改示例中使用的名稱。要完成這個示例,您必須具備
創建
和使用模式
模式上的特權。metastore管理員、目錄所有者或模式所有者可以授予這些特權。例如,要賦予' data_engineers '組中的所有用戶創建表的權限lineagedemo
的模式lineage_data
目錄,metastore管理員可以運行以下查詢:創建模式lineage_data.lineagedemo;格蘭特使用模式,創建在模式lineage_data.lineagedemo來`data_engineers`;
捕捉和探索血統
要捕獲沿襲數據,請使用以下步驟:
進入你的Databricks登陸頁麵,點擊新在側邊欄中,選擇筆記本菜單上的。
輸入筆記本的名稱並選擇SQL在默認的語言.
在集群,選擇一個可以訪問Unity Catalog的集群。
點擊創建.
在第一個筆記本單元格中,輸入以下查詢:
創建表格如果不存在lineage_data.lineagedemo.菜單(recipe_idINT,應用程序字符串,主要字符串,甜點字符串);插入成lineage_data.lineagedemo.菜單(recipe_id,應用程序,主要,甜點)值(1,“酸橘汁醃魚,“玉米餅”,“坯子”),(2,“番茄湯”,“雜音”,“焦糖布丁”),(3.,“芯片”,“烤奶酪”,“芝士蛋糕”);創建表格lineage_data.lineagedemo.晚餐作為選擇recipe_id,concat(應用程序,“+”,主要,“+”,甜點)作為full_menu從lineage_data.lineagedemo.菜單
要運行查詢,請單擊單元格並按下shift + enter或者點擊並選擇運行單元.
要使用Data Explorer查看由這些查詢生成的沿襲,請執行以下步驟:
在搜索框中,輸入
lineage_data.lineagedemo.dinner
並點擊搜索lineage_data.lineagedemo。在Databricks吃晚餐.下表,按
晚餐
表格選擇血統選項卡。沿襲麵板出現並顯示相關的表(在本例中為
菜單
表)。要查看數據沿襲的交互式圖,請單擊參見譜係圖.缺省情況下,該圖顯示一個級別。您可以單擊節點上的圖標,顯示更多可用的連接。
單擊連接沿襲圖中節點的箭頭以打開血統聯係麵板。的血統聯係麵板顯示有關連接的詳細信息,包括源表和目標表、筆記本和工作流。
顯示與筆記本相關聯的
晚餐
表中,選擇筆記本血統聯係麵板或關閉沿襲圖並單擊筆記本電腦.要在新選項卡中打開筆記本,請單擊筆記本名稱。要查看列級沿襲,單擊圖中的列以顯示到相關列的鏈接。例如,單擊' full_menu '列顯示該列派生的上遊列:
要演示使用不同的語言(例如Python)創建和查看繼承,請使用以下步驟:
打開之前創建的筆記本,創建一個新的單元格,並輸入以下Python代碼:
%python從pyspark.sql.functions進口蘭德,輪df=火花.範圍(3.).withColumn(“價格”,輪(10*蘭德(種子=42),2)).withColumnRenamed(“id”,“recipe_id”)df.寫.模式(“覆蓋”).saveAsTable(“lineage_data.lineagedemo.price”)晚餐=火花.讀.表格(“lineage_data.lineagedemo.dinner”)價格=火花.讀.表格(“lineage_data.lineagedemo.price”)dinner_price=晚餐.加入(價格,在=“recipe_id”)dinner_price.寫.模式(“覆蓋”).saveAsTable(“lineage_data.lineagedemo.dinner_price”)
通過單擊單元格並按下運行單元格shift + enter或者點擊並選擇運行單元.
在搜索框中,輸入
lineage_data.lineagedemo.price
並點擊搜索lineage_data.lineagedemo。在Databricks的價格.下表,按
價格
表格選擇血統選項卡並單擊參見譜係圖.點擊圖標來探索由SQL和Python查詢生成的數據沿襲。
單擊連接沿襲圖中節點的箭頭以打開血統聯係麵板。的血統聯係麵板顯示有關連接的詳細信息,包括源表和目標表、筆記本和工作流。
捕獲和查看工作流沿襲
Lineage也被捕獲為讀取或寫入Unity Catalog的任何工作流。要演示Databricks工作流的查看沿襲,請使用以下步驟:
進入你的Databricks登陸頁麵,切換到數據科學與工程角色。
點擊新在側邊欄中選擇筆記本菜單上的。
輸入筆記本的名稱並選擇SQL在默認的語言.
點擊創建.
在第一個筆記本單元格中,輸入以下查詢:
選擇*從lineage_data.lineagedemo.菜單
點擊時間表在頂部欄。在計劃對話框中,選擇手冊,選擇一個可以訪問Unity Catalog的集群,然後單擊創建.
點擊現在運行.
在搜索框中,輸入
lineage_data.lineagedemo.menu
並點擊搜索lineage_data.lineagedemo。菜單.下查看所有表,按
菜單
表格選擇血統選項卡上,單擊工作流,並選擇下遊選項卡。作業名稱顯示在作業名作為消費者的
菜單
表格
血統的權限
沿襲圖具有相同的特性權限模型作為Unity Catalog。如果用戶在表上沒有SELECT特權,他們將無法瀏覽沿襲。此外,用戶隻能看到他們有權查看的筆記本、工作流和儀表板。例如,如果對非admin用戶執行以下命令userA
:
格蘭特使用模式在lineage_data.lineagedemo來`userA@公司.com`;格蘭特選擇在lineage_data.lineagedemo.菜單來`userA@公司.com`;
當userA
的沿襲圖lineage_data.lineagedemo.menu
表,他們會看到的菜單
表,但將無法看到有關關聯表的信息,例如,下遊表lineage_data.lineagedemo.dinner
表格的晚餐
表顯示為戴麵具的
節點中顯示到userA
,userA
無法展開圖表以顯示他們沒有訪問權限的表的下遊表。
有關在Unity Catalog中管理對安全對象的訪問的更多信息,請參閱在Unity目錄中管理特權.有關管理對工作空間對象(如筆記本、工作流和儀表板)的訪問的詳細信息,請參見工作空間對象訪問控製.
刪除沿襲數據
警告
下麵的說明刪除存儲在Unity目錄中的所有對象。僅在必要時使用這些說明。例如,滿足遵從性需求。
要刪除沿襲數據,必須刪除管理Unity Catalog對象的metastore。有關刪除轉移瘤的詳細信息,請參見刪除轉移瘤.數據將在30天內刪除。
數據沿襲API
數據沿襲API允許您檢索表和列沿襲。
重要的
要訪問Databricks REST api,您必須進行身份驗證.
檢索表沿襲
的沿襲數據晚餐
表格
請求
curl——net -X GET\- h“application / json內容類型:\https:// < databricks-instance / api / 2.0 / lineage-tracking / table-lineage\- d{“table_name”:“lineage_data.lineagedemo。, "include_entity_lineage": true}} "
取代< databricks-instance >
用Databricks工作空間實例名例如:dbc-a1b2345c-d6e7.cloud.m.eheci.com
.
本例使用. netrc文件。
響應
{“上遊”:[{“tableInfo”:{“名稱”:“菜單”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_type”:“表”},“notebookInfos”:[{“workspace_id”:4169371664718798,“notebook_id”:1111169262439324}]}],“下遊”:[{“notebookInfos”:[{“workspace_id”:4169371664718798,“notebook_id”:1111169262439324}]},{“tableInfo”:{“名稱”:“dinner_price”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_type”:“表”},“notebookInfos”:[{“workspace_id”:4169371664718798,“notebook_id”:1111169262439324}]}]}
檢索列沿襲
的列數據晚餐
表格
請求
curl——net -X GET\- h“application / json內容類型:\https:// < databricks-instance / api / 2.0 / lineage-tracking / column-lineage\- d{“table_name”:“lineage_data.lineagedemo。“晚餐”,“column_name”:“甜點”}}”
取代< databricks-instance >
用Databricks工作空間實例名例如:dbc-a1b2345c-d6e7.cloud.m.eheci.com
.
本例使用. netrc文件。
響應
{“upstream_cols”:[{“名稱”:“甜點”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_name”:“菜單”,“table_type”:“表”},{“名稱”:“主要”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_name”:“菜單”,“table_type”:“表”},{“名稱”:“應用程序”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_name”:“菜單”,“table_type”:“表”}],“downstream_cols”:[{“名稱”:“full_menu”,“catalog_name”:“lineage_data”,“schema_name”:“lineagedemo”,“table_name”:“dinner_price”,“table_type”:“表”}]}