数仓设计及数据采集
1. **数据仓库设计**
- 建模:维度建模:【事实表、维度表】
- 分层:ODS、DW【DWD、DWM、DWS】、APP
- **==掌握本次项目中数仓的分层==**
- ODS、DWD、DWB、DWS、ST、DM
2. 业务系统流程和数据来源
- 数据源
- 常见的数据表
3. **==数据采集==**
- 核心1:实现自动化增量采集
- 核心2:Sqoop采集中的一个特殊问题以及解决方案
数仓设计回顾
- **目标**:了解数据仓库设计的核心知识点
- **路径**
- step1:分层
- step2:建模
- **实施**
- **分层**
- 什么是分层?
- 本质:规范化数据的处理流程
- 实现:每一层在Hive中就是一个数据库
- 为什么要分层?
- 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
- 数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
- 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
- 把复杂问题简单化:一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。
- 屏蔽原始数据的异常对业务的影响:不必改一次业务就需要重新接入数据
- 怎么分层?
- ODS:原始数据层/操作数据层,最接近与原始数据的层次,数据基本与原始数据保持一致
- DW:数据仓库层,实现数据的处理转换
- DWD:实现ETL
- DWM:轻度聚合
- DWS:最终聚合
- ADS/APP/DA:数据应用层
建模
- 什么是建模?
- 本质:决定了数据存储的方式,表的设计
- 为什么要建模?
- **大数据系统需要数据模型方法来帮助更好地组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡。**
- 性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐
- 成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本
- 效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率
- 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性
- 有哪些建模方法?
- ER模型:从全企业的高度设计一个 3NF 【三范式】模型,用实体关系模型描述企业业务,满足业务需求的存储
- **维度模型**:从分析决策的需求出发构建模型,为分析需求服务,重点关注用户如何更快速的完成需求分析,具有较好的大规模复杂查询的响应性能
- Data Vault:ER 模型的衍生,基于主题概念将企业数据进行结构化组织,并引入了更进一步的范式处理来优化模型,以应对源系统变更的扩展性
- Anchor:一个高度可扩展的模型,核心思想是所有的扩展知识添加而不是修改,因此将模型规范到 6NF,基本变成了 k-v 结构化模型
- 怎么构建维度模型步骤?
- a.选择业务过程:你要做什么?
- b.声明粒度:你的分析基于什么样的颗粒度?