什么是Data lineage?

在大数据时代,系统的数据来源广泛,各种类型的数据快速产生且爆发性增长。从数据的产生、ETL
、数据融合分析、数据应用直至最终消亡,在数据流转过程中数据之间的关联关系称为数据血缘关系。

数据血缘揭示了数据的生命周期——目标是记录并显示从数据产生到消亡的完整数据流
数据血缘描述数据处理流程、表、报表、即席查询之间的流向关系、表与表的依赖关系、表与离线ETL任务、调度平台、计算引擎之间的依赖关系。

数据血缘是数据治理的重要一环,用于追踪数据的来源、评估数据价值、数据生命周期管理、数据安全管控。

Data lineage includes the data origin, what happens to it and where it moves over time. Data lineage gives visibility while greatly simplifying the ability to trace errors back to the root cause in a data analytics process.

如何写入数据血缘数据

显示效果

本示例创建三个数据集tableA、tableB、tableC, 由数据集A、B关联统计得到数据集C,如用户点击明细日志和用户表关联,按天统计PU/UV数据
显示效果如下:

源码示例

datahub的Rest API 支持数据血缘关系的写入。通过UpstreamLineage对象创建一个数据集的上流数据集。

# -*- coding: utf-8 -*-
from typing import List
import datetime
import datahub.emitter.mce_builder as builder
from datahub.emitter.mcp import MetadataChangeProposalWrapper
from datahub.emitter.rest_emitter import DatahubRestEmitter
from datahub.metadata.com.linkedin.pegasus2avro.dataset import (UpstreamLineage,
)
from datahub.metadata.schema_classes import *def add_metadata_by_me(urn: str, desc: str, emitter: DatahubRestEmitter):# 构造一个数据集属性对象dataset_properties = DatasetPropertiesClass(description=desc)# 构造一个MetadataChangeProposalWrapper对象metadata_event = MetadataChangeProposalWrapper(entityType="dataset",changeType=ChangeTypeClass.UPSERT,entityUrn=urn,aspectName="datasetProperties",aspect=dataset_properties,)# emit 元数据,这是一个阻塞调用res = emitter.emit(metadata_event)print(res)def add_data_lineage(src_urns: List[str], dest_urn: str, emitter: DatahubRestEmitter):# 构建数据血缘上流对象UpstreamClass实例upstream_tables: List[UpstreamClass] = []for urn in src_urns:upstream_tables.append(UpstreamClass(dataset=urn,type=DatasetLineageTypeClass.TRANSFORMED,auditStamp=AuditStampClass(time= int(datetime.datetime.now().timestamp()*1000),actor="urn:li:corpuser:datahub",),))# 构建上流数据血缘对象实例upstream_lineage = UpstreamLineage(upstreams=upstream_tables)# 构造一个MetadataChangeProposalWrapper对象lineage_mcp = MetadataChangeProposalWrapper(entityType="dataset",changeType=ChangeTypeClass.UPSERT,entityUrn=dest_urn,aspectName="upstreamLineage",aspect=upstream_lineage,)# emit 元数据,这是一个阻塞调用res = emitter.emit(lineage_mcp)print(res)gms_server_url = "http://172.25.21.188:8080"# 构建一个GMS REST API Emitter。
rest_emitter = DatahubRestEmitter(gms_server_url)add_metadata_by_me(builder.make_dataset_urn("hive", "test.tableA"), "用户点击明细数据", rest_emitter)
add_metadata_by_me(builder.make_dataset_urn("hive", "test.tableB"), "用户基础数据", rest_emitter)
add_metadata_by_me(builder.make_dataset_urn("hive", "test.tableC"), "用户PV/UV按天统计数据", rest_emitter)add_data_lineage(src_urns=[builder.make_dataset_urn("hive", "test.tableA"), builder.make_dataset_urn("hive", "test.tableB")],dest_urn=builder.make_dataset_urn("hive", "test.tableC"),emitter=rest_emitter
)

参考

datahub data lineage sample_code
干货 | 携程数据血缘构建及应用

【DataHub】 现代数据栈的元数据平台--如何将数据血缘关系写入DataHub相关推荐

  1. 数据治理 主数据 元数据_我们对数据治理的误解

    数据治理 主数据 元数据 Data governance is top of mind for many of my customers, particularly in light of GDPR, ...

  2. sparkSQL练习 ( Parquet数据、parquet元数据合并、json数据的操作)

    Parquet数据源自动推断分区 java写 import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSpark ...

  3. 现代数据栈,谁主沉浮?

    欢迎直接访问我的博客. 2022年已经没有人谈大数据这个概念,不是它失败了,恰恰是因为它成功了.成功技术的吊诡之处在于,它最终会被认为是理所当然,消失在背景音中. 从最近的新闻热点里,我们不难看到大数 ...

  4. 数据治理【元数据管理】

    目录 1.认识元数据 2.元数据的分类 3.元数据管理成熟度评估模型 4.元数据管理平台架构 4.1 元数据采集服务 4.2 元模型驱动的设计与开发 4.3 元数据管理服务 4.4 元数据访问服务 4 ...

  5. 下秒数据李元佳:湖仓一体带来现代数据栈变革

    嘉宾 | 李元佳  整理 | 王谟仕 出品 | CSDN云原生 2022年7月12日,在CSDN云原生系列在线峰会第13期"现代数据栈峰会"上,下秒数据联合创始人李元佳分享了现代数 ...

  6. NLPIR语义智能平台支持大数据个性化学习

    随着计算机技术的革新,互联网新媒体的快速发展,人们的生活已经进入高速信息时代.我们每天的生活都要产生大量数据,因此我们获取数据的速度和规模不断增长,大量数据不断的被存入存储介质中形成海量数据. 数据挖 ...

  7. 大数据资源整合分析平台_企业大数据管理软件_大数据资源整合管理系统

    在现如今大数据时代下,很多公司拥有大量的数据信息,这些数据繁多并且复杂,对于不懂技术的人员来讲,无疑是巨大的难题,这些数据背后存在着巨大的价值,我们可以利用大数据的方式,来提高数据的使用率,便可以挖掘 ...

  8. 北京供销大数据集团大数据管理平台研发完成走向商用

    自"十三五"规划纲要出炉之后,国内相关厂商密集布局大数据基础设施.产业基地.数据中心及管理平台等,助推大数据产业能力落地. 近日,北京供销大数据集团(以下简称"SinoB ...

  9. 数据治理展示血缘关系的工具_Nebula Graph 在微众银行数据治理业务的实践

    本文为微众银行大数据平台:周可在 nMeetup 深圳场的演讲这里文字稿,演讲视频参见:B站 自我介绍下,我是微众银行大数据平台的工程师:周可,今天给大家分享一下 Nebula Graph 在微众银行 ...

最新文章

  1. Java从零开始学二十三(集合Map接口)
  2. JS学习之Node类型
  3. 吴恩达机器学习006分类问题
  4. Linux里的21究竟是什么
  5. mysql CASE WHEN的基础和多种用法
  6. oracle的存储过程怎么运行时间,ORACLE 定时运行存储过程经常使用时间间隔
  7. 关注Linux防火墙之介绍iptables与ufw命令
  8. cad卸载_CAD绘图效率太低?1GCAD逆天插件送给你,用了再也不卸载
  9. python:制作水印图片
  10. Windows U盘插入出现位置不可用 无法访问 拒绝访问
  11. (16)双目视觉的图像获取
  12. vue中使用echarts自定义主题
  13. Settings学习总结(一)
  14. 程序员VS文艺男!!论发型的重要性,堪比整容!
  15. 故障案例 | 慢SQL引发MySQL高可用切换排查全过程
  16. vue 公共列表选择组件,引用museUI的样式
  17. 网络ioctl实践3:设置网卡的mac、ip、子网掩码、广播地址
  18. 沪上首座“区块链生态谷”揭开面纱!
  19. [MySQL] 在线 DDL 工具 gh-ost 原理简介
  20. Matlab进阶绘图第4期—三维堆叠柱状图/三维堆积图

热门文章

  1. 云服务器可以用来做什么?云服务器有什么用途?
  2. UVa-11212编辑书稿
  3. 《铁道科学与工程学报》投稿经验
  4. 谷歌浏览器chrom兼容问题
  5. 泰凌微8258入门教程 基础篇④——sig_mesh_sdk架构介绍
  6. 你的孤独,虽败犹荣 摘抄
  7. Android进阶之路 - 如何携带数据跳转到三方应用、指定页?
  8. 计蒜客信息学入门赛 #16--B
  9. 显示器接口_显示器USB接口的作用是什么?为什么会没有反应?
  10. lwm2m和coap协议 简解读