诺华有底气不买ADC
06-17
背景介绍数据沿袭:是数据治理中元数据管理领域下的一个子类别。是数据溯源、获取数据生成环节、发现数据关系的过程。
目的是解决“数据的三个哲学问题”:我是谁、我从哪里来、我到哪里去。常见的数据亲缘关系主要包括两类: SQL亲缘关系:基于SQL解析AST语法树,得到SQL表和字段亲缘关系;业务亲缘关系:往往是基于任务调度DAG生成的数据流关系;行业解决方案 行业实施解决方案,开源 项目数据沿袭和项目沿袭能力对比。
Apache Atlas是基于Hive引擎实现的。它仅支持 Hive lineage 并支持类型限制(Query、CreateTable/View)。
LinkedIn DataHub 支持调度任务沿袭,但 SQL 沿袭支持较弱,并且不支持字段沿袭。 Lyft Amundsen 仅支持日程安排。
任务血统以Apache Atlas的Hive血统制作为例。 Hive Hook生成的血缘关系信息会发送到消息中间件。
基于Hive原生的HookContext获取血缘关系信息。支持血缘关系分析的Hive SQL类型: CREATETABLE_AS_SELECT:基于Select创建Hive表; CREATE_MATERIALIZED_VIEW:创建物化视图 CREATEVIEW:创建视图; ALTERVIEW_AS :更改视图表; LOAD/EXPORT/IMPORT:数据加载、导入、导出; QUERY:复杂查询语句;基于LineageREST类提供实体对象血缘关系查询REST API接口,并基于AtlasLineageService#getAtlasLineageInfo接口实现元数据查看操作。
更多详情请参考《业界元数据管理:方案设计概览》SQLFlow是一款商业产品,用于多方言SQL沿袭分析,支持表沿袭和字段沿袭: SQL沿袭比较常见的任务沿袭解析方法有: 1、基于任务系列调度系统; 2.基于埋点的跟踪url记录。由于其实现与具体业务关联性较强,没有通用的设计模式,所以暂不赘述。
下面主要针对SQL血统进行详细分析。 SQL血统分析的实现核心:基于AST抽象语法树,识别表和字段的血统关系。
因此,血缘关系分析至少需要具备以下能力: SQL解析:将SQL语句转换为AST抽象语法树。血缘识别:遍历AST语法树,识别对应的表和字段信息,通过AST树结构绑定血缘上下游关系。
血缘关系存储:血统信息一般由顶点(表/字段)和边(上下游关系)组成。图结构的谱系信息维护在公共云上。
面对多样化的需求,定义SQL沿袭解析的目标是:多种SQL方言的数据沿袭。支持,包括表祖和田祖。
为实现这一目标,拆除实施方案如下。由于不同SQL方言的SQL解析方式不同,直接基于SQL原生引擎的语法解析和语义解析实现会存在强绑定引擎问题。
句法分析:如果在这个阶段处理,每种方言都需要对应不同的血缘关系语义解析访问者,工作量线性增加。语义分析:如果在这个阶段进行处理,则严重依赖元数据,语义分析后得到的血缘关系对象是不完整的,并且根据上述并基于各层的SQL解析能力,只会执行单层血缘关系引擎。
对于多种SQL方言的血缘关系分析是不可行的。因此,最终的选择是基于特定的SQL解析组件。
不同解析组件方案对比如下: 选项 编译框架 性能通用性 方言支持 工作负载 CalciteJavaCC Excellent+Medium+High+JSqlParserJavaCC Excellent-Medium-Excellent-High MarbleJavaCC Excellent-Medium+Poor+High -HqlsqlANTLR Medium Medium+Medium+SparkSQLANTLR中 中-差+高-PrestoSQLANTLR 中-差+高-Druid 无框架 优秀+中+优秀 中阿里巴巴Druid是阿里云计算平台DataWorks团队出品的数据库,为监控而生。连接池。
Druid SQL 是一个内置的 SQL 层。虽然它没有完整的SQL优化功能,但它具有良好的SQL多方言支持,支持多方言转换为AST抽象语法树。
因此,借助Druid SQL层,可以更方便地实现血缘解析框架。 Druid SQL 可以分为三个模块:Parser、AST、Visitor。
解析器:将SQL转换为AST抽象语法树。解析器由解析器和词法分析器两部分组成。
Lexer实现词法分析,Parser实现语法分析。 AST:抽象语法树,基于树结构表示SQL语句的含义。
访客:遍历AST的方法是处理AST最便捷的模式。可以自定义Visitor,比如解析血缘关系的LineageVisitor。
遍历AST后,可以获取字段和表的血缘关系。 。
方解石还可以支持数据谱系分析。由于Calcite主要针对统一的SQL方言,对原生多种方言的支持较弱,因此扩展原生SQL方言将会涉及大量工作。
对于这个实现,请参考Linkedin Coral。 Calcite JavaCC SQL 解析依赖于 FMPP 配置文件和 FreeMarker 模板文件。
官方建议是在配置??模板扩展时避免修改Parser.jj文件。注:如果业务场景只涉及单一SQL方言的血统分析,更推荐基于方解石的处理。
有关方解石的更多详细信息,请参阅《Calcite剖析》谱系鉴定一栏。谱系识别基于Visitor模式遍历AST树结构,获取表谱系和字段谱系信息。
血缘关系图包括:表血缘关系:以表信息为顶点,以表之间的关系为边。例如创建B表为select * from A,则源为A表,目标为B表;字段血缘关系:字段作为顶点,字段之间的关系作为边,字段之间的关系继承自表关系。
例如源是A表的id字段,目标是B表的id字段。血缘关系识别Visitor模式可以基于自下而上的方式递归遍历血缘关系。
根据表节点和字段节点维护谱系信息。示例(CREATE AS SELECT 语句):创建表table_02 as select id,name from table_01,得到解析AST的语法如下: ROOT:是AST的根节点信息,是SQL解析的起点; SQL关键字(绿色框):如CREATE、TABLE、EXTERNAL等; SQL表达式(紫色框):每个SQL表达式维护父节点信息; SQL解析器(黄色框):解析指定的SQL语句类型。
根据不同的SQLParser解析器,可以生成不同的AST子类树;通过遍历AST语法树,可以得到如下表谱系:table_01→table_02字段谱系:table_01.id→table_02.id;表_01.名称→表_02.名称; lineage存储lineage数据主要维护顶点和边之间的关系,相应的数据可以存储在关系数据库中。但如果关系级别超过3级,查询时就会出现性能瓶颈,所以可以选择基于图数据库存储。
图数据库是使用图结构进行语义查询的数据库,使用节点、边和属性来表示和存储数据。该系统的关键概念是图,它将存储中的数据项与数据节点以及表示节点之间关系的边的集合直接关联起来。
根据图数据库语言类型,可分为以下几种: Gremlin:Janus Graph、InfiniteGraph、Cosmos DB、DataStax Enterprise (5.0+)、Amazon NeptuneCypher:Neo4j、RedisGraph、AgensGraphnGQL:Nebula Graph 应用架构不及时由于数据沿袭,且数据量级通常较大,一般选择消息中间件进行解耦处理。血缘分析的应用流程如下: 生产数据:上层数据图谱、数据开发等功能在SQL和任务过程中主动推送到元数据应用层。
元数据应用层根据固定的消息格式,产生相应的数据给消息中间件;消费数据:血缘服务定期从消息中间件消费数据进行处理;另外还支持应用层直接RPC接口调用血缘服务进行分析;解析数据:血缘服务根据工具类解析血缘关系,并根据元数据服务层验证血统有效性和组织,最终使血统信息永存。血缘关系服务可分为血缘关系分析、血缘关系存储、血缘关系查询三个模块。
总结 数据沿袭是数据治理的重要应用之一。通过沿袭信息,可以清楚地识别表之间的依赖关系,并跟踪数据的来源和流程。
数据沿袭在数据质量管理、合规性和数据安全方面发挥着重要作用。在复杂的数据环境中,维护准确的数据沿袭信息是一个具有挑战性的问题。
本文首先介绍了数据血统的背景和行业解决方案。其次详细讲解了SQL沿袭的实现原理,主要包括SQL解析、沿袭识别、沿袭存储三个过程。
最后,它提供了数据沿袭应用架构的总体概述。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-17
06-06
06-18
06-18
06-18
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用