用Unity Catalog捕獲和查看數據沿襲

你可以使用Unity Catalog來捕獲在Databricks上運行的查詢的運行時數據沿襲。所有語言都支持沿襲,並捕獲到列級別。沿襲數據包括與查詢相關的筆記本、工作流和儀表板。血統可以在Data Explorer中近乎實時地可視化,並使用Databricks REST API進行檢索。

Lineage是在所有工作空間中聚合到一個Unity Catalog metastore上的。這意味著在一個工作空間中捕獲的譜係在共享該轉移的任何其他工作空間中都是可見的。用戶必須具有查看沿襲數據的正確權限。沿襲數據保留30天。

本文描述了使用Data Explorer和REST API可視化沿襲。

需求

使用Unity Catalog捕獲數據沿襲需要以下內容:

  • 工作空間必須具有Unity目錄啟用並在高級版推出。

  • 表必須在Unity Catalog亞元中注冊,才有資格進行譜係捕獲。

  • 查詢必須使用Spark DataFrame(例如,返回DataFrame的Spark SQL函數)或Databricks SQL接口。有關Databricks SQL和PySpark查詢的示例,請參見例子

  • 要查看表或視圖的沿襲,用戶必須具有選擇對表或視圖的特權。

  • 若要查看筆記本、工作流或儀表板的沿襲信息,用戶必須具有由工作區中的訪問控製設置定義的對這些對象的權限。看到血統的權限

  • 要捕獲沿襲,必須使用表創建和修改數據。對於直接寫入文件的數據,不捕獲沿襲。

限製

  • 隻有在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_datalineagedemo格蘭特使用模式創建模式lineage_datalineagedemodata_engineers

捕捉和探索血統

要捕獲沿襲數據,請使用以下步驟:

  1. 進入你的Databricks登陸頁麵,點擊新圖標在側邊欄中,選擇筆記本菜單上的。

  2. 輸入筆記本的名稱並選擇SQL默認的語言

  3. 集群,選擇一個可以訪問Unity Catalog的集群。

  4. 點擊創建

  5. 在第一個筆記本單元格中,輸入以下查詢:

    創建表格如果存在lineage_datalineagedemo菜單recipe_idINT應用程序字符串主要字符串甜點字符串);插入lineage_datalineagedemo菜單recipe_id應用程序主要甜點1“酸橘汁醃魚“玉米餅”“坯子”),2“番茄湯”“雜音”“焦糖布丁”),3.“芯片”“烤奶酪”“芝士蛋糕”);創建表格lineage_datalineagedemo晚餐作為選擇recipe_idconcat應用程序“+”主要“+”甜點作為full_menulineage_datalineagedemo菜單
  6. 要運行查詢,請單擊單元格並按下shift + enter或者點擊運行菜單並選擇運行單元

要使用Data Explorer查看由這些查詢生成的沿襲,請執行以下步驟:

  1. 搜索框中,輸入lineage_data.lineagedemo.dinner並點擊搜索lineage_data.lineagedemo。在Databricks吃晚餐

  2. ,按晚餐表格

  3. 選擇血統選項卡。沿襲麵板出現並顯示相關的表(在本例中為菜單表)。

  4. 要查看數據沿襲的交互式圖,請單擊參見譜係圖.缺省情況下,該圖顯示一個級別。您可以單擊加號圖標節點上的圖標,顯示更多可用的連接。

  5. 單擊連接沿襲圖中節點的箭頭以打開血統聯係麵板。的血統聯係麵板顯示有關連接的詳細信息,包括源表和目標表、筆記本和工作流。

    譜係圖
  6. 顯示與筆記本相關聯的晚餐表中,選擇筆記本血統聯係麵板或關閉沿襲圖並單擊筆記本電腦.要在新選項卡中打開筆記本,請單擊筆記本名稱。

  7. 要查看列級沿襲,單擊圖中的列以顯示到相關列的鏈接。例如,單擊' full_menu '列顯示該列派生的上遊列:

    全菜單列沿襲

要演示使用不同的語言(例如Python)創建和查看繼承,請使用以下步驟:

  1. 打開之前創建的筆記本,創建一個新的單元格,並輸入以下Python代碼:

    pythonpyspark.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”
  2. 通過單擊單元格並按下運行單元格shift + enter或者點擊運行菜單並選擇運行單元

  3. 搜索框中,輸入lineage_data.lineagedemo.price並點擊搜索lineage_data.lineagedemo。在Databricks的價格

  4. ,按價格表格

  5. 選擇血統選項卡並單擊參見譜係圖.點擊加號圖標圖標來探索由SQL和Python查詢生成的數據沿襲。

    擴展譜係圖
  6. 單擊連接沿襲圖中節點的箭頭以打開血統聯係麵板。的血統聯係麵板顯示有關連接的詳細信息,包括源表和目標表、筆記本和工作流。

捕獲和查看工作流沿襲

Lineage也被捕獲為讀取或寫入Unity Catalog的任何工作流。要演示Databricks工作流的查看沿襲,請使用以下步驟:

  1. 進入你的Databricks登陸頁麵,切換到數據科學與工程角色。

  2. 點擊新圖標在側邊欄中選擇筆記本菜單上的。

  3. 輸入筆記本的名稱並選擇SQL默認的語言

  4. 點擊創建

  5. 在第一個筆記本單元格中,輸入以下查詢:

    選擇lineage_datalineagedemo菜單
  6. 點擊時間表在頂部欄。在計劃對話框中,選擇手冊,選擇一個可以訪問Unity Catalog的集群,然後單擊創建

  7. 點擊現在運行

  8. 搜索框中,輸入lineage_data.lineagedemo.menu並點擊搜索lineage_data.lineagedemo。菜單

  9. 查看所有表,按菜單表格

  10. 選擇血統選項卡上,單擊工作流,並選擇下遊選項卡。作業名稱顯示在作業名作為消費者的菜單表格

捕獲和查看儀表板沿襲

要演示查看SQL儀表板的沿襲,請使用以下步驟:

  1. 轉到您的Databricks登陸頁麵,並通過單擊打開數據瀏覽器數據在側邊欄中。

  2. 單擊目錄名稱,單擊lineagedemo,並選擇菜單表格你也可以使用搜索表文本框中搜索菜單表格

  3. 點擊操作>創建一個快速儀表板

  4. 選擇要添加到儀表板的列,然後單擊創建

  5. 搜索框中,輸入lineage_data.lineagedemo.menu並點擊搜索lineage_data.lineagedemo。菜單

  6. 查看所有表,按菜單表格

  7. 選擇血統選項卡並單擊指示板.指示板名稱顯示在儀表板的名字作為菜單表的消費者。

血統的權限

沿襲圖具有相同的特性權限模型作為Unity Catalog。如果用戶在表上沒有SELECT特權,他們將無法瀏覽沿襲。此外,用戶隻能看到他們有權查看的筆記本、工作流和儀表板。例如,如果對非admin用戶執行以下命令userA

格蘭特使用模式lineage_datalineagedemouserA@公司com格蘭特選擇lineage_datalineagedemo菜單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”“表”}}