hive字段级血缘关系实现
1.数据血缘的概念
https://zhuanlan.zhihu.com/p/133953825
就放一张效果图,可以理解为有向无环图,对于图中的Table X,还可以画出其右半边,即Table X作为来源表的情况
2.环境准备:
开发环境:需要一台能够联外网的linux开发机。用来maven编译hive
生产环境:一台8c16t linux,内存128g
目前项目实现的效果
将最早2015年至今的hql每日解析一次,约两万条sql语句,10线程并发解析,可以在一个小时内完成。解析成功率约98%
前后端联调,前端展示优化。
3.数据血缘核心实现
(1).http://cxy7.com/articles/2017/11/10/1510310104765.html
利用hooks, 在hive-site.xml中配置 hive.exec.post.hooks 为 org.apache.hadoop.hive.ql.hooks.LineageLogger
自己实现解析较为困难,可以直接用开源实现好的来做。但是也有一些解析结果不符合预期的
(2).使用hive jdbc连接hiveserver2,编写程序并行运行sql时,在sql前加explain ,即只编译,不运行
(3).hive-site.xml 并行编译配置 修改 hive.driver.parallel.compilation=true
(4).https://blog.csdn.net/wotkk/article/details/74755083
修改hive driver代码(org.apache.hadoop.hive.ql.Driver),配合(2)做到只编译而不运行mr,达到缩短运行时间的目的
具体思路:
通过打印堆栈( (new Exception()).printStackTrace(); )知道
当运行sql时,hive在runInternal方法中调用complieInternal
当只需编译sql(sql前加上explain)时,hive在compileAndRespond中调用complieInternal
complieInternal方法末尾加上自己的逻辑:
只需要解析形如 insert into/override table xxxx select ...这种格式的sql,对于create table xxx as select 可以前期做预处理转化为insert into ...
拿到sql去掉前面的explain,调用删减后的RunInternal方法(fakeRunInternal,重点只保留hooks)
参考(1)修改LineageLogger将产生的json保存到数据库,作为下一步解点边关系的输入数据
4.其他工作
(1)将不符合开源hive语法的sql进行转换,比如转换with语法(借助python的sqlparse来做),用正则转换create table等
这个部分占用了大量工作量,原始sql的解析通过率为30%,解析后通过率达到99.7%
(2)注册hive没有的永久udf
(3)处理链路自动化
包括了对hiveserver2 oom的处理
(4)转换成功率统计
hive字段级血缘关系实现相关推荐
- mysql血缘 表级血缘 字段级血缘GUDU GSP,JSQL PARSER,ANTLR MYSQL,DRUID
** 目的: ** 分析mysql的表级和字段级血缘,本文给出他人源码或示例 工具 GUDU-SQLPARSER GSP JSQL-PARSER antlr DRUID 横向对比 名称 开源 功能 优 ...
- 聊聊Hive数据血缘——从Atlas没有列级血缘的Bug讲起
正文共: 9053字 12图 预计阅读时间: 23分钟 前几天,Datahub提供了最新的字段级别数据血缘功能,很多朋友迫不及待想对比一下Datahub的字段级血缘与Atlas的区别. 这个时候问题来 ...
- 搜狐 Hive SQL 血缘关系解析与应用
1. 研究背景 随着企业信息化和业务的发展,数据资产日益庞大,数据仓库构建越来越复杂,在数仓构建的过程中,常遇到数据溯源困难,数据模型修改导致业务分析困难等难题,此类问题主要是由于数据血缘分析不足造成 ...
- 【文末有惊喜!】Hive SQL血缘关系解析与应用
本文字数:7860字 预计阅读时间:20分钟 + 1 研究背景 随着企业信息化和业务的发展,数据资产日益庞大,数据仓库构建越来越复杂,在数仓构建的过程中,常遇到数据溯源困难,数据模型修改导致业务分析困 ...
- 通过SQL一键解析表字段血缘关系
可以根据sql文件中的sql快速解析出表字段到字段的血缘关系,支持mysql.oracle.hive.impala.greenplum等数据库sql语法解析,可以在sql文件中放如多段sql解析,也可 ...
- hive血缘关系之输入表与目标表的解析
接了一个新需求:需要做数据仓库的血缘关系.正所谓兵来将挡水来土掩,那咱就动手吧. 血缘关系是数据治理的一块,其实有专门的第三方数据治理框架,但考虑到目前的线上环境已经趋于稳定,引入新的框架无疑是劳民伤 ...
- 2022数据血缘关系详解
在数据资产管理与数据治理领域,数据之间的血缘关系是一个绕不开的话题,数据血缘的完备程度也是评价一个企业数据中台成熟度的重要度量之一.到底什么是数据血缘,它对于数据工作者和数据使用者有哪些举足轻重的作用 ...
- 数据治理展示血缘关系的工具_Nebula Graph 在微众银行数据治理业务的实践
本文为微众银行大数据平台:周可在 nMeetup 深圳场的演讲这里文字稿,演讲视频参见:B站 自我介绍下,我是微众银行大数据平台的工程师:周可,今天给大家分享一下 Nebula Graph 在微众银行 ...
- Apache Atlas精讲:由浅入深,从概念,原理,使用,到自定义数据模型,生成血缘关系,带你玩转Atlas
文章目录 引言 Atlas 原理及相关概念 Altas 使用 Atlas Rest Api 详解及示例 结语 引言 Apache Atlas 是托管于 Apache 旗下的一款元数据管理和治理的产品, ...
最新文章
- Python--数据存储:pickle模块的使用讲解
- 局部和匿名类型作模板实参
- half extents
- C#二维和多维数组编程实例
- Win32 窗口篇(3)
- 有向有权图的电阻------给你出道题
- 基于知识引入的情感分析
- qt socket 传递结构体 结构体中有list_GO语言入门-14、结构体
- python存储机制_python学习之内存驻留机制简述
- Windows 下安装 MySQL 及使用可视化工具执行 SQL 脚本过程记录
- python查找在圆周率100万个数字中是否有你的生日
- 图解谷歌地球使用入门、谷歌地球COM API 开发入门、谷歌地球使用的初步协议分析
- 毕业设计 基于stm32的计步器设计与实现 - 物联网
- nRF52832 ble_app_blinky 例程
- shibor与沪深300指数的相关性图示
- [JZOJ4567]nekopara
- laravel 项目笔记之SendCloud 驱动
- 图片情感识别/分类/分析 概述
- 如何比较两个速度的大小地程序_58安居客小程序平台化与多小程序开发探索与实践...
- 第一次使用Arduino MKR WIFI 1010
热门文章
- java swing(GUI) MySQL实现的视频播放器系统源码+运行教程
- linux tun 读取数据,Linux Tun/Tap网口(/dev/net/tun)的读写方法
- 小米开源工具SOARSOAR-WEB
- ValueError:Target is multilabel-indicator but average=‘binary‘.Please choose another average setting
- 六级作文小模板。。。
- 新一配:全球每天消耗上百亿个二维码,一旦用完了怎么办?
- Java网络编程--网络基础
- 算法设计与分析期末复习不挂科
- ubuntu swap交换空间增加与关闭
- 【我的 OCM 之路】恩墨学子姚宏迪的奋斗历程