捕获和查看数据沿袭与统一目录
你可以使用Unity Catalog在Databricks上捕获运行时数据沿袭。所有语言都支持谱系,并将其捕获到列级别。沿袭数据包括与查询相关的笔记本、工作流和仪表板。沿袭可以在数据资源管理器中近乎实时地可视化,并使用Databricks REST API检索。
沿袭是在所有的工作空间中聚集到一个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
Catalog,一个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或者点击并选择运行单元.
要使用数据资源管理器查看这些查询生成的沿袭,请执行以下步骤:
在搜索在Databricks工作区的顶部栏中,输入
lineage_data.lineagedemo.dinner
并点击搜索lineage_data.lineagedemo。在数据库吃晚餐.下查看所有表,按
晚餐
表格选择血统选项卡。的血统面板显示
菜单
表格若要查看数据沿袭的交互式图形,请单击参见谱系图.图中默认显示一级。您可以单击图标在节点上显示更多可用的连接。
单击连接沿袭图中节点的箭头以打开血统联系面板。的血统联系面板显示有关连接的详细信息,包括源和目标表、笔记本和工作流。
显示与笔记本相关的
晚餐
表中,选择笔记本血统联系面板或关闭沿袭图并单击笔记本电脑.要在新选项卡中打开笔记本,请单击笔记本名称。要查看列级沿袭,单击图中的列以显示到相关列的链接。例如,点击' 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或者点击并选择运行单元.
在搜索在Databricks工作区的顶部栏中,输入
lineage_data.lineagedemo.price
并点击搜索lineage_data.lineagedemo。价格在Databricks.下表,按
价格
表格选择血统选择并单击参见谱系图.点击图标来探索SQL和Python查询生成的数据沿袭。
单击连接沿袭图中节点的箭头以打开血统联系面板。的血统联系面板显示有关连接的详细信息,包括源和目标表、笔记本和工作流。
捕获和查看工作流沿袭
对于任何读取或写入Unity Catalog的工作流,Lineage也会被捕获。要演示Databricks工作流的查看沿袭,请使用以下步骤:
转到Databricks登录页,切换到Data Science & Engineering角色。
点击新在侧栏中选择笔记本菜单上的。
输入笔记本的名称并选择SQL在默认的语言.
点击创建.
在第一个笔记本单元格中,输入以下查询:
选择*从lineage_data.lineagedemo.菜单
点击时间表在上面的栏里。在调度对话框中,选择手册,选择一个可以访问Unity Catalog的集群,单击创建.
点击现在运行.
在搜索在Databricks工作区的顶部栏中,输入
lineage_data.lineagedemo.menu
并点击搜索lineage_data.lineagedemo。菜单在数据库.下查看所有表,按
菜单
表格选择血统选项卡上,单击工作流,并选择下游选项卡。作业名称出现在下面作业名作为消费者
菜单
表格
血统的权限
沿袭图也有相同的特性权限模型作为Unity目录。如果用户在表上没有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 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”:“表”}]}