数据治理 Python桑基图处理表关系
需求
随着hive库表越来越多,调度出问题后,排查时间越来越长。计划通过桑基图以及血缘图谱解决,当前先用桑基图页面顶一段时间。后期做成web服务,如果有可能,尽量嵌入到hive metastore
预期
- 桑基图:
业务DB/中间件 – ods – cdm – ads – 大数据服务DB
- 图谱:
业务DB/中间件 – 调度 – ods – 调度 – cdm – 调度 – ads – 调度 – 大数据服务DB
环境与版本
- Anaconda – Python3.6
- IED – PyCharm
- 前端可视化图表 – echarts(pycharts 1.+)
数据处理
整理hive表
方案一: 从hive metastore关联表获取(DBS + TBLS)
## 所有库表一次获取
SELECT concat(b.NAME,'.',a.TBL_NAME) FROM TBLS a
LEFT JOIN DBS b ON a.DB_ID = b.DB_ID;
方案二: 从hdfs 获取
## 分库表多次获取
hadoop fs -ls /user/hive/warehouse/tmp.db/ | awk -F ' ' '{print $8}' | sed 's/\/user\/hive\/warehouse\/tmp\.db\//tmp\./g'
方案三: 从hive客户端获取
## 分库表多次获取
use tmp; # a库,b库...
show tables;
整理表间关系
- 通过步骤【整理hive表】拿到表,找到代码里的管理关系
比如a与b关联,生成c, c与d关联生成e
source | target |
---|---|
a | c |
b | c |
c | f |
d | f |
- 将如上数据插入mysql
CREATE TABLE `links` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`source` varchar(255