捕获和查看数据沿袭与统一目录

你可以使用Unity Catalog在Databricks上捕获运行时数据沿袭。所有语言都支持谱系,并将其捕获到列级别。沿袭数据包括与查询相关的笔记本、工作流和仪表板。沿袭可以在数据资源管理器中近乎实时地可视化,并使用Databricks REST API检索。

沿袭是在所有的工作空间中聚集到一个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_dataCatalog,一个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或者点击运行菜单并选择运行单元

要使用数据资源管理器查看这些查询生成的沿袭,请执行以下步骤:

  1. 搜索在Databricks工作区的顶部栏中,输入lineage_data.lineagedemo.dinner并点击搜索lineage_data.lineagedemo。在数据库吃晚餐

  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. 搜索在Databricks工作区的顶部栏中,输入lineage_data.lineagedemo.price并点击搜索lineage_data.lineagedemo。价格在Databricks

  4. ,按价格表格

  5. 选择血统选择并单击参见谱系图.点击加号图标图标来探索SQL和Python查询生成的数据沿袭。

    扩展谱系图
  6. 单击连接沿袭图中节点的箭头以打开血统联系面板。的血统联系面板显示有关连接的详细信息,包括源和目标表、笔记本和工作流。

捕获和查看工作流沿袭

对于任何读取或写入Unity Catalog的工作流,Lineage也会被捕获。要演示Databricks工作流的查看沿袭,请使用以下步骤:

  1. 转到Databricks登录页,切换到Data Science & Engineering角色。

  2. 点击新图标在侧栏中选择笔记本菜单上的。

  3. 输入笔记本的名称并选择SQL默认的语言

  4. 点击创建

  5. 在第一个笔记本单元格中,输入以下查询:

    选择lineage_datalineagedemo菜单
  6. 点击时间表在上面的栏里。在调度对话框中,选择手册,选择一个可以访问Unity Catalog的集群,单击创建

  7. 点击现在运行

  8. 搜索在Databricks工作区的顶部栏中,输入lineage_data.lineagedemo.menu并点击搜索lineage_data.lineagedemo。菜单在数据库

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

  10. 选择血统选项卡上,单击工作流,并选择下游选项卡。作业名称出现在下面作业名作为消费者菜单表格

捕获和查看仪表板沿袭

要演示SQL仪表板的查看沿袭,请使用以下步骤:

  1. 转到Databricks登录页,单击打开数据资源管理器数据在侧栏中。

  2. 单击目录名称,单击lineagedemo,并选择菜单表格你也可以使用搜索表文本框中的顶部栏中搜索菜单表格

  3. 点击操作>创建快速仪表板

  4. 选择要添加到仪表板的列并单击创建

  5. 搜索在Databricks工作区的顶部栏中,输入lineage_data.lineagedemo.menu并点击搜索lineage_data.lineagedemo。菜单在数据库

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

  7. 选择血统选择并单击指示板.仪表板名称显示在下面仪表板的名字作为菜单表的消费者。

血统的权限

沿袭图也有相同的特性权限模型作为Unity目录。如果用户在表上没有SELECT特权,他们将无法探索谱系。此外,用户只能看到他们有权限查看的笔记本、工作流和仪表板。例如,对非admin用户执行以下命令userA

格兰特使用lineage_datalineagedemouserA@公司com格兰特选择lineage_datalineagedemo菜单userA@公司com

userA属性的沿袭图lineage_data.lineagedemo.menu表,他们会看到菜单表,但将无法看到有关关联表的信息,例如下游表lineage_data.lineagedemo.dinner表格的晚餐表显示为戴面具的节点中显示到userA,userA无法展开图以显示它们没有访问权限的表的下游表。

有关管理对工作空间对象的访问的详细信息,请参见工作空间对象访问控制

删除沿袭数据

警告

下面的指令删除存储在Unity Catalog中的所有对象。只有在必要时才使用这些说明。例如,为了满足法规遵从性需求。

要删除沿袭数据,必须删除管理Unity Catalog对象的metastore。有关删除亚转移瘤的更多信息,请参见删除一个metastore.数据将在30天内删除。

数据沿袭API

数据沿袭API允许检索表和列的沿袭。

重要的

要访问Databricks REST api,必须进行身份验证

检索表沿袭

类的沿袭数据晚餐表格

请求

—netrc -X GET- h“application / json内容类型:https:// < databricks-instance / api / 2.0 / lineage-tracking / table-lineage- d{“table_name”:“lineage_data.lineagedemo。Dinner ", "include_entity_lineage": true}}'

取代< databricks-instance >和数据库工作空间实例名称例如,dbc-a1b2345c-d6e7.cloud.www.neidfyre.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

检索列沿袭

属性的列数据晚餐表格

请求

—netrc -X GET- h“application / json内容类型:https:// < databricks-instance / api / 2.0 / lineage-tracking / column-lineage- d{“table_name”:“lineage_data.lineagedemo。Dinner ", "column_name": "dessert"}}'

取代< databricks-instance >和数据库工作空间实例名称例如,dbc-a1b2345c-d6e7.cloud.www.neidfyre.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”“表”