梳理

梳理
zzh- 虚拟数据生成
/opt/module/data_mocker目录下改
application.yml文件中的日期
2.1 日志数据采集到kafka这里加一个kafka的原因是:一是为了给实时数仓用,二是如果不加kafka,多个flume采集数据到hdfs如果文件重名,会导致数据写进hdfs失败(因为hdfs不支持随机写),如果用flume聚合会导致第二个flume的source和sink传输数率不一致,导致chinle爆掉
2.2 业务数据采集到kafka
3. 从kafka把日志数据消费数据到hdfs
3.2 从kafka把业务数据消费数据到hdfs
- 数仓建设(逻辑分层,物理没有分层)
4.1 ods建设
4.1.1 为什么要建设ODS层?
因为我们的数仓需要数据,但是无法直接从业务系统获取
原因:1.业务数据库行式存储,数据仓库需要列式存储
2.业务数据库不可以存储大量数据,数据仓库需要存储大量数据提升统计分析的准确性
3.不应该让业务数据库对接数据仓库从而增加业务系统的负担
4.1.2 ODS层建设要点
因为我们想让统计分析的时间更长,所有需要采集的时间相对更短,所以我们让ods与业务系统同步数据,尽可能不变
- 存储方式不要变
- 数据格式不要变
- 压缩格式不要变
可以变的 - 融合异构数据(列:要把日志数据存到一张表中,但是日志数据有不同的字段,所以要融合)
- 汇总不同时间数据(列:日志数据有不同的时间,需要汇总到一张表中)
ODS层的设计格式如下:
(1)ODS层的表结构设计依托于从业务系统同步过来的数据结构。
(2)ODS层要保存全部历史数据,故其压缩格式应选择压缩比较高的,此处选择gzip。
(3)ODS层表名的命名规范为:ods_表名_单分区增量全量标识(inc/full)。
4.1.3 日志数据表字段建设
日志数据为json格式,json表字段选最外层json对象属性为表字段,它是json的结构,所以用特殊类型
4.1.4 业务数据表字段建设
ods为数据仓库的数据源
4.2 dim建设(主要功能是分析数据:面相状态)
4.2.1 为什么要建设dim层?
因为不同的需求可以在同一个维度(角度)上进行分析,所有维度可能重复使用为了避免重复计算,所以我们建设dim层,为统计分析提供数据支撑。
DIM层设计要点:
(1)DIM层的设计依据是维度建模理论,该层存储维度模型的维度表。
(2)DIM层的数据存储格式为orc列式存储+snappy压缩。(因为经常要统计分析)
(3)DIM层表名的命名规范为dim_表名_全量表或者拉链表标识(full/zip)
4.2.1 全量维度表建设
为什么用全量维度表?
数据仓库的一个重要特点就是反映历史的变化,所以如何保存维度的历史状态是维度设计的重要工作之一。所有要保存维度数据的历史状态,所以可以每天保存一份全量的维度数据。
为什么用拉链表?
拉链表的意义就在于能够更加高效的保存维度信息的历史状态(比全量表更加节省空间)
数据源为增量表(因为全量表得变化数据及其困难)
- 确定维度(表)
在设计事实表时,已经确定了与每个事实表相关的维度,理论上每个相关维度均需对应一张维度表。需要注意到,可能存在多个事实表与同一个维度都相关的情况,这种情况需保证维度的唯一性,即只创建一张维度表。另外,如果某些维度表的维度属性很少,例如只有一个**名称,则可不创建该维度表,而把该表的维度属性直接增加到与之相关的事实表中,这个操作称为维度退化 - 确定主维表和相关维表(在业务数据库中查看)
- 主维表:主维表是指维度表的最底层,它存储维度的基本信息,比如维度名称、维度代码、维度描述等。
- 相关维表:相关维表是指维度表的中间层,它存储维度的关联信息,比如维度与主维表的关联关系、维度与其他维度的关联关系等。
- 确定维度属性(选择出可以用来分析的维度属性,主要看业务需求)
- 尽可能生成丰富的维度属性(列存储不会降低效率,但是会增加磁盘占用)
- 尽量不使用编码,而使用明确的文字说明,一般可以编码和文字共存(因为我们并不知道编码的含义)
- 尽量沉淀(计算)出通用的维度属性
4.2.2 拉链维度表建设
4.3 dwd建设(主要功能是统计数据:面相行为)
4.3.1 为什么要建设dwd层?
对ods层的数据进行清洗、转换、加工,为后面统计分析做准备。
(这里加工为一个广泛概念,所有没有具体操作)
dwd主要保存业务行为数据(事实表)
大多数表是增量表,少部分是全量表
DWD层设计要点:
(1)DWD层的设计依据是维度建模理论,该层存储维度模型的事实表。
(2)DWD层的数据存储格式为orc列式存储+snappy压缩。(因为经常要统计分析)
(3)DWD层表名的命名规范为dwd_数据域_表名_单分区增量全量标识(inc/full)
事实表应该包含以下信息:
- 包含维度信息:维度越多描述行为越详细
- 包含度量值:所有行为必须可以用来统计,用来统计的值就是度量值
设计事务事实表时一般可遵循以下四个步骤:
- 选择业务过程:确定什么表
- 声明粒度:确定行
- 确认维度:确定列
- 确认事实:确定度量值
4.4 dws建设
4.4.1 日志数据建设
4.4.2 业务数据建设
4.5 ads建设
