数据仓库的流程

数据仓库完全用统计分析框架实现:Spark,MR
但是因为实际生产环境中,需求量非常大,
如果每个需求都采用独立c代码开发方式,重复计算会很多.
提高性能的方法: 1.减少数据量 2. 减少重复计算
例如RDD
cache 可以减少重复计算,但是不安全,都在缓存中,
persist 都放内存中,但是慢

而数仓是通过表来保存数据,从而达到减少重复计算的操作.

1.数据仓库的模块流程

1.数据源ODS(Operate Data Store)

1.作用: 汇总数据,为统计分析做准备

2.特点(能不改就不改)

1.行式存储

不需要进行统计分析,所以尽量不改变存储格式,因为修改数据格式需要消耗大量资源.,

2.数据格式

尽量不改变数据格式,消耗资源,影响性能.
JSON,TSV
但是如果必须要修改,就是异构数据的融合,

2.数据加工(Data Warehouse detail)

1.作用

为统计分析做准备

2.什么意思?

对数据的加工如过滤,无效数据筛选,

3.统计(DWS ->Data Warehouse Summary)

1.作用

对加工后的数据进行统计

4.分析(ADS->Application Data Service)

应用程序数据服务

1.作用

分析后的结构是整个数仓的最终结果,最后需要对外提供服务,例如:可视化界面图像.

5.DIM层(Common)

1.什么是维度(Dimension)

看事物的角度

2.层级之间的思考?

每一层执行完,再执行下一层,确保不会出现回环

2.如何控制SQL的执行

通过SQL和任务调度器,由任务调度器来完成调度工作.

2.每层的问题

1.ODS层

1.创建

  • 1.建表格式 创建外部表,而不是创建内部表,因为在最初创建时,可能会频繁修改表结构,但是如果是内部表就会删除数据,所以使用外部表.所以如果表是设计好的,就可以使用内部表创建.
  • 2.压缩 因为ODS是数据源,需要存储海量数据,所以需要压缩数据,而这里的压缩,选择压缩率最高的,所以是选择GZIP
DROP TABLE IF EXISTS ods_base_category2_full;
CREATE EXTERNAL TABLE ods_base_category2_full
(
    `id`               STRING COMMENT '编号',
    `name`             STRING COMMENT '二级分类名称',
    `category1_id`   STRING COMMENT '一级分类编号',
    `create_time`    STRING COMMENT '创建时间',
    `operate_time`   STRING COMMENT '修改时间'
) COMMENT '二级品类表'
    PARTITIONED BY (`dt` STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
    NULL DEFINED AS ''
LOCATION '/warehouse/gmall/ods/ods_base_category2_full/'
TBLPROPERTIES ('compression.codec'='org.apache.hadoop.io.compress.GzipCodec');

3.装载数据,如果数据转移到目录下但是没有元数据,则修复分区

hive (default)> 
msck repair table table_name [add/drop/sync partitions];

2.DIM层(这个是单独出来的,从ODS中直接获取数据)

猜你喜欢

转载自blog.csdn.net/qq_42265608/article/details/132676050