技术标签: python 数据仓库 数据治理 血缘关系 数据可视化 Python
随着hive库表越来越多,调度出问题后,排查时间越来越长。计划通过桑基图以及血缘图谱解决,当前先用桑基图页面顶一段时间。后期做成web服务,如果有可能,尽量嵌入到hive metastore
业务DB/中间件 – ods – cdm – ads – 大数据服务DB
业务DB/中间件 – 调度 – ods – 调度 – cdm – 调度 – ads – 调度 – 大数据服务DB
方案一: 从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;
source | target |
---|---|
a | c |
b | c |
c | f |
d | f |
CREATE TABLE `links` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`source` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
`target` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
`is_deleted` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
`gmt_create` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
SELECT source,target FROM `links`;
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
import pandas as pd
import json
from pyecharts.charts import Sankey
from pyecharts import options as opts
# 获取数据库数据
def load_links_frame_from_mysql():
conn = pymysql.connect(host="127.0.0.1",
port=3306,
user="账号",
password="密码",
db="数据库",
charset="utf8")
sql = "SELECT source,target FROM links"
data_frame = pd.read_sql(sql, conn)
conn.close()
return data_frame
# 获取nodes
def get_nodes(df):
nodes = []
for value in pd.concat([df['target'],df['source']]).unique():
dic = {
}
dic['name'] = value
nodes.append(dic)
return nodes
# 获取links
def get_links(df):
links = []
for i in df.values:
links.append({
'source': i[0], 'target': i[1], 'value': 1})
return links
if __name__=="__main__":
link = load_links_frame_from_mysql()
colors = [
"#67001f",
"#b2182b",
"#d6604d",
"#f4a582",
"#fddbc7",
"#d1e5f0",
"#92c5de",
"#4393c3",
"#2166ac",
"#053061"]
pic = (
Sankey(init_opts=opts.InitOpts(width="480px",height="720px")).set_colors(colors)
.add('大数据表关系图',
get_nodes(link),
get_links(link),
pos_bottom="50%",
focus_node_adjacency="allEdges",
linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color='source'),
label_opts=opts.LabelOpts(position='top'),
node_gap=1,
)
.set_global_opts(title_opts=opts.TitleOpts(title='大数据'))
)
pic.render('xueyuan_sankey.html')
此错误由重复数据引起
此错误为 source 与 target数据相同引起
- 后期调色忽略,图谱后期再处理;
- 有相关数据治理方面的,可以相互探讨和学习
文章浏览阅读182次。Unix传奇(上篇) 陈皓 了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今。要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技术,而应该是去 —— 认认真真地了解和回顾历史。 Unix是目前还在存活的操作系_unix传奇pdf
文章浏览阅读2.4k次。安装好eclipse启动时报如下的错An error has occurred.See the log file E:\Eclipse\EclipseMars\WorkSpace\.metadata\.log.依次打开文件夹configuration、.settings,找到org.eclipse.ui.ide.prefs文件,用记事本打开将RECENT_WORKSPACES=后面的地址删除SHOW_WORKSPACE_SELECTION_DIALOG=后面的false改为ture如图在一个你能找到的地方创_eclipse启动不了
文章浏览阅读490次。环境说明windows10,64bit,python3.7.4问题描述Traceback (most recent call last):File “F:/code-ml/resnet101/resnet50-101-152.py”, line 13, in import torchvisionFile “C:\python37\lib\site-packages\torchvisio..._警告: 找不到图像文件。模块 'impedancectrl_singlemodel/trajectory planner
文章浏览阅读3.2k次。为什么要先写组织机构呢,其实没有为什么,先写什么都是可以的一:界面展示(仅仅是组织机构)组织机构管理主界面:添加界面:修改界面:二:主要难点1.easyUi数据格的初始化与分页:可以查看我之前写的一篇,里面包含了数据格在后台的数据的处理以及运用pageHelper进行分页的详细介绍。点击_组织机构管理 系统
文章浏览阅读5.9k次,点赞4次,收藏16次。大家是不是经常看到如下代码List list = Arrays.asList("a","b","c");list.stream().forEach(System.out::println);这个“::”到底是什么语法呢?在JAVA 8 中,可以通过 “::” 关键字来访问类的构造方法,对象方法,静态方法。一般有下面几种用法。访问静态方法 // 使用方法:类名::静态方法名, 如 Integer::..._java中::是什么意思
文章浏览阅读4.3k次,点赞2次,收藏5次。为高德地图marker添加..._amap.marker icon
文章浏览阅读213次。云计算及虚拟化教程学习云计算、虚拟化和计算机网络的基本概念。此视频教程共2.0小时,中英双语字幕,画质清晰无水印,源码附件全课程英文名:Cloud Computing and Virtualization An Introduction百度网盘地址:https://pan.baidu.com/s/1lrak60XOGEqMOI6lXYf6TQ?pwd=ns0j课程介绍:https://www.aihorizon.cn/72云计算:概念、定义、云类型和服务部署模型。虚拟化的概念使用 Type-2 Hyperv_云计算与虚拟化技术 教改
文章浏览阅读3.8k次。八种数据类型类型 int short long byte float double char boolean 字节数 4 2 8 1 4 8 4 JVM相关 大小 -2147483648~2147483647 -32768~32767 -9223372..._number of primitive data types injava
文章浏览阅读3.8k次。(3)更改扩展商店源:尝试切换到另一个扩展商店源。您可以在 VS Code 设置中找到“扩展”选项,然后在“扩展商店”中选择另一个源。例如,您可以将源更改为“Visual Studio Code Marketplace China”。不要轻易网络重置,不要轻易网络重置,不要轻易网络重置!网上有些教程不要尝试,否则会失去网络模块,就再也连不上网了,切记切记。(2)更改网络设置:如果您使用代理,请尝试更改代理设置。等扫描结束之后,点击右下角查看选定问题,第二部点击否rr。找一台别人的电脑,下载。_vscode提取扩展时出错xhr failed
文章浏览阅读361次,点赞6次,收藏11次。本文是自己在学习Numpy过后总是遗忘的很快,希望将numpy的知识点织成一张网,形成一个体系。能够方便我每次复习的时候快速回想,并帮助我构建对知识点之间的关联,巩固和加深理解。
文章浏览阅读2.5k次。水平显示Fragment分页在FragmentPagerAdapter和FragmentStatePagerAdapter使用如何选择?FragmentPagerAdapaterFragmentPagerAdapter继承自PagerAdapter类,它将每个页面使用一个Fragment,只要用户能够返回到该页面,该Fragment就会一直保存在FragmentManager中,子类只需要实现getItem()和getCount()就可以实现一个可以工作的Adapter。FragmentPager_fragmentpageradapter
文章浏览阅读2.3k次。http://ouonline.net/building-your-own-fs-with-fuse-1FUSE的全称是”Filesystem in Userspace”,即“用户空间的文件系统”,这是一个内核模块,能够让用户在用户空间实现文件系统并且挂载到某个目录,就像在内核实现的文件系统一样。使用FUSE有几个好处:一是因为在用户空间实现,开发和调试都比较方便;二是_writing a fuse filesystem: a tutorial