数据知识分布图
2023-01-05 09:59:30 3 举报
AI智能生成
登录查看完整内容
数据知识分布
作者其他创作
大纲/内容
id
总金额
订单状态
用户id
订单交易编号
创建时间
操作时间
省份id
优惠金额
原价金额
运费
订单表
订单编号
商品id
商品名称
商品价格
商品数量
订单详情表
真实姓名
生日
性别
邮箱
用户级别
用户表
名称
汽车
ods_商品一级分类表
ods_商品二级分类表
业务编号
支付宝流水编号
支付金额
交易内容
支付类型
支付时间
流水表
省份名称
地区id
地区编码
国际编码
省份表
子主题
地区名
地区
特殊商品名称
特殊商品表
商品单位id
评价
评价时间
评价表
编号
退款类型
退款件数
退款金额
退款原因
退款表
乱码+访问时间+id+操作事件
乱码+页面停留+id+操作事件
日志数据
mid:995
uid:995
vc:10
vn:1.3.4
er:B
loading_time:2
l:en
hive内置的json
往DWD层转换首先要做的
注释:先把日志数据变string
get_json_object()
自定义UDF函数
第一步:解析日志(日志结构会很不一样)
尽量不连表查询
宁全勿丢
不考虑数据冗余
第二步:DWD_BASE没有降维,没有拆表。
第三步:举例:错误日志放A表,点击量日志放到B表,页面停留时间放到C表
dwd每一步
价格
商品描述
重量
品牌id
三级品类id
二级品类id
一级品类id
一级品类名称
二级品类名称
dwd_goods_sku
标准商品单位id
X5
ods_商品表
是否可以共用时间
注意
日
周
周的第几天
第几个月
季度
年
是否是周末
目的是声明颗粒度
是否节假日
时间维度表
dwd_data_time
不是从ods层来的
凭空出现
key值
value值
属性不可分割
第一范式
不能存在部分函数依赖
第二范式
不能存在传递函数依赖
第三范式
数据设计
学号不会重
学号
课程名称
分数
部分依赖
可以重名
学生姓名
系名
表
本表的主键
它表的外键
找传递依赖的字段
表和表的依赖关系是什么?
依赖关系
如何判断两个表在同一维度?
系主任和学号就是传递依赖
系主任
表二
我个人理解
存在依赖关系
个人理解
面向对象,同一类
什么叫维度?
依赖关系的表
什么叫降维?
避免join
总是在避免连表查询
避免连表
宽表
中间层就起到了--大数据中心的作用
通过使用中间数据层,减少重复计算过程
国家统计局和清华大学相关数据研究部门合并的
清华大学数据中心
学校开介绍信
需要数据
某位教授想做一个课题---主题
大数据中心
减少重复开发
避免大量的IO
数仓设计原则
合表,因为主题需要
广义的降维
数据聚合
防止驼背的产品
背背佳
成绩上升
使用背背佳
主题
降维
结构数据
非结构数据
ods层到dwd层该怎么处理?
三范式
数据冗余低
面向事务
常使用连表查询------低效
传统关系型数据库的主要应用
联机事务处理OLTP
以一张事实表为中心进行表的组织
面向业务
数据冗余高
维度模型
数仓的主要应用
维度表直接连接事实表
星形模型
维度表可间接接连接事实表
雪花模型
有多张事实表
星座模型
维度的三种模型
联机分析处理OLAP
关系模型和维度模型
以一笔支付记录作为事实表中的一行数据
事务性事实表
实际情况
某日退货
每天的销售额
周期型快照事实表
货到哪里了?
物流
累积型快照事实表
每行数据代表一个业务事件
事实表
商品种类
抽象
维度表
表的分类
降维的过程
选择业务过程
建时间维度表
声明颗粒度
时间,地点,人物,事
描述业务事实
确定维度
订单数,订单金额
事实,指业务中的度量值
提前把最小颗粒度构建清楚
基于每个具体业务过程的特点构建最细颗粒度的明细数据层事实表
矩阵--我头都大了
回归星形模型
确定事实
DWD层
9.12的课程
为什么要数据分层?
区
市
省
国家
街道
地域维度表
dwd_data_city
丢失重要的相关数据
每一步提前预知结果
理想化
官方
直接进行数据聚合
根据主题和想要的结果去降维---合并表
看手里有什么数据
面向字段,面向表
确定我们已有什么线索
思路搞清
找线索
数仓之后层级去做的事
自由主题
主题:周某某和A某某的关系
卖了多少?
库存多少?
销售表(事实表)
日期
年份
日期表
省份
城市
地址表
商品表
供应商名称
供应商id
供应产品品类
品类id
供应商表
商品实际完成订单情况(事实表)
退货表
数仓主题
事实表的颗粒度
事实表和事实表的关联
基于事实表来处理维度表
一张表都是事实表的度量
规整事实表中的字段
宽表字段
DWS层
注意Partition
大量job
MapReduce
hive处理的方式
忽略不需要的列
列剪裁
hive.optimize.pruner=true
分区剪裁
减少join
hive.map.aggr=true
Map端部分聚合
hive.group-by.skewindata
随机分配
group by
配置优化
程序优化
始终在避免数据倾斜
Hive
内置函数
自定义的函数
JAVA访问Hive
hive的自定义函数
操作系统把程序装入内存
程序的一次启动执行
程序是存放在硬盘中的可执行文件,主要是指令和数据。
同一个程序可以多次启动
地址空间是相互隔离的
不同的进程
进程一般都是并发的
不是程序执行和系统进行并发调度的最小单位
进程
所有的程序都运行在JVM中
主线程
程序入口点main()方法
启动一个JVM进程
GC线程(垃圾回收)
每个线程默认分配1MB的栈内存
JDK1.8
什么是Java程序的进程呢?
但是不是操作系统资源分配的最小单位
CPU调度的最小单位
线程
Java进程中每一个线程都对应着一个Thread实例
线程的描述信息在Thread的实例属性中得到保存,供JVM进行线程管理和调度时使用。
该线程被叫做当前线程
一个CPU内核上,同一时刻只能有一个线程是正在执行的
Thread实例
Java
线程和进程的基础
线程是代码段的一次顺序执行流程
是进程的程序指令在内存中的位置
程序段
操作数据在内存中的位置
数据段
进程ID
进程状态
程序起始地址
文件句柄
执行时各种CPU寄存器的值
各种栈的值
让出CPU
切换进程
进程上下文
进程名称
进程调度
进程优先级
还有很多。。。。
进程控制模块
内存
数据
I/O
核心资源
进程的组成
记录着线程下一条指令的代码段内存地址
程序计数器
独立拥有
局部变量存储空间
不受垃圾回收器管理
栈内存
线程ID
线程名称
线程状态
就是CPU时间片
一个时刻中,没得到CPU时间片的线程处于就绪状态
CPU资源
线程优先级
守护线程
线程基本信息
线程的组成
运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表
魏同学的概念
数据的先进后出
曹同学的概念
是后进先出的模式
栈帧的操作
存放方法帧(栈帧)的内存
方法帧主要保存该方法中的局部变量,方法的返回地址
受进程管理
JVM合理把方法帧放入对应线程的栈内存
方法帧的局部变量的内存空间就被回收
方法执行完后,JVM把方法帧从栈内存清除
Java方法每一次执行都需要配一个方法帧
如果一个线程中main()方法是第一个被分配的方法帧,那么当线程结束时它的方法帧是倒数第几个被栈内存清空的?
本质:4核CPU,在同一时刻,只能执行4个线程。
问题
分时操作系统分配给每个正在运行的进程微观上的一段CPU时间
蔡同学的概念
大部分操作系统都能够直接对部分线程进行管理
Linux
颗粒度
注意,这里的时间片不是最小时间单位
把CPU工作的时间,按某一个定量时间段算就是CPU时间片
不同的操作系统,不同的CPU,对应的CPU时间片长度都不同
CPU时间片
栈的概念
进程包含线程
线程是CPU调度的最小单位
方法区内存
堆内存
系统资源
线程之间共享进程的资源
进程之间是相互独立的
线程切换比进程切换快
切换速度
有本身即使线程也是进程的程序
进程和线程的界限很模糊
进程与线程的区别
每时每刻我们访问Zookeeper的树结构时,不同的节点返回的数据都是一致的。
实现了分布式环境的数据一致性
一个事务中访问到了另外一个事务未提交的数据
一个事务内根据同一个条件对数据进行多次查询,但是结果不一样
两个完全相同的查询执行时,结果不同
是一种简单的分布式数据库
ZooKeeper
更新操作
1.数据库三范式
2.如何降维,什么是同一维度。
3.事实表和维度表
核心回顾
库存表
事件,故事
时间
地点
人物
事
数据源
ODS
业务主题的划分
数据规范
dwd的功能
数据集成
IDL
划分主题
用户活动
商家交易
数据组件
CDL
支持应用查询
数据集市层
MDL
数据应用层
ADL
美团
内核内存
用户空间内存
对应的进程处于用户状态
每个应用程序进程都有一个单独的用户空间
需要切换到内核状态才能进行系统调用
用户状态的进程不能访问内核空间中的数据
System Call
内存的安全
不同的操作系统IO读写方式不同
中间会用到System Call这样的系统调用
IO读写依赖于底层的IO读写
不是直接把数据写入物理设备
write
不是直接从物理设备把数据读取到应用内存
read
系统调用
read和write
系统调用把数据从内核缓冲区复制到应用程序的进程缓冲区
系统调用把数据从应用程序的进程缓存区复制到操作系统的内核缓冲区
缓冲区的目的是减少与设备之间的频繁物理交换
保存之前的进程数据和状态信息------重要
物理设备(外部设备)的直接读写涉及操作系统的中断
实际是批量读取
物理设备的实际IO操作,通过这种机制来提升系统的性能
为什么设置缓冲区?
操作系统内核只有一个缓冲区
用户的缓冲区也可以叫进程缓冲区
每个用户程序(本质是进程)都有自己独立的缓冲区
linux
调用把数据从内核缓冲区复制到应用的用户缓冲区
把数据从应用的用户缓冲区复制到内核缓冲区
调用流程
缓存区
IO底层原理
read和write两个系统调用都不负责数据在内核缓冲区和物理设备之间的交换
本质是两个缓冲区的数据交换
重点
并行磁盘存储
大数据
磁盘存储
磁带
纸带,打孔卡
物理表现(存储和读取)
拓扑/网络
层次的/关系的
结构化
逻辑连接
例子1.遥控器控制电视
例子2.高铁,从郑州到南京什么时候到?火车什么时候进站什么时候离站?
例子3.机器人,电池温度?电池剩余?机械臂是否正常运行?
探测器
重复性(hadoop)
大部分都是重复的
发布的评论
电子邮件
语音留言
非重复性(文本消歧)
非结构化
不规则,没有标准
内部格式
运营数据的存储
数据集市
数据保险箱
数据仓库
数据库
主文件
文件
文件结构
数据架构
同时并行读取
同时并行写入
数据量很大
同一结构重复出现
重复性的
记录数据的结构相似
结构相同
一个数据的出现和另一个数据的出现之间的唯一区别在于数据的内容
外框
定义好的数据
语境化
以文本形式体现的数据
文本数据
视频,图片,摩斯码
非文本数据
提取Extract
转换Transform
加载Load
文本消歧(ETL)
非结构化的重复性数据不在乎数据的语境,而非结构化的非重复性数据非常在乎语境
非重复性数据
外部分类法和本体论
邻近度分析
同形异义词小姐
子文档处理
推到语境的技术
都具有重复性
数据体量不一样
结构化数据数据一般被分解成单个记录,以块的形式存在,不同的数据在不同的块里
需要解析器来处理
罗马人口普查方法
非结构化的重复数据,所有数据都在一个块里
数据库中的数据和探测器来的数据是一样的么?
结构化的重复数据和非结构化的重复数据是一样的么?
只需要做简单的I/O
结构化DBMS
非结构化数据最重要的是从一大堆数据中解析数据,必须要进行大量的I/O操作
JJJJJJJJJJJJJJJJJJJJJJJJJJLLLLLLLLLLLLLLLLLLLJLJLJJLJLJLJLJLJLJLJJLJLJJLJLJLJLJLJLJLJLJLJLJLJLJLJLJLJLJLJJLJLJLJLJLJLJLJLJLJJLJLJLJLJLJLJLJLJLJLJLJLJLJLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLJJJJJJJJJJJJJJJJJJJLJLJLJLJLJLJLJLJLJLJ
复习一下YARN的管理流程,hadoop的工作流程
管理大量数据的能力
数据的最终目的是支持分析
数据质量
准确性
上市公司财务数据
正式分析
数据有效性
数据的谱系
非正式分析
法律
是否是自动化收集
特定采集仪器----采集物理纸质数据---OCR光学软件
客服录音---语音识别---转录技术
第一步收集数据
消解键结构
消解定义
消解计算
消解数据结构
第二步逻辑消解
第三步规范化和数据分类
企业数据管理
最核心的目的是完成一个连贯的,整体的数据集成,集成后数据会重新格式化为规范形式
可以被重新组合
保证数据颗粒度处于非常低的状态
企业的数据基础
数据源本身----》数据采集------》组织数据------》数据存储----》数据集成----》有用性------》归档-----》丢弃-------》
100年前10元钱就买寿险和现在五千
例外:寿险行业,精算师-----查看100年以前的数据。---科学的历史
正常来讲,数据的生命周期是随着时间的增长而递减的
随着时间的推移,数据完整性会发生根本变化,导致数据本身定义发生巨大改变,失去可比性
例子:股价,1950年的IBM每股35美元。2015年IBM的每股200美元。
会随着时间的流式而退化
数据完整性
数据的生命周期
数据基础设施
工作总结
0 条评论
回复 删除
下一页