HIVE数据仓库分层

1:为什么要分层

大多数情况下,我们完成的数据体系却是依赖复杂、层级混乱的。在不知不觉的情况下,我们可能会做出一套表依赖结构混乱,甚至出现循环依赖的数据体系。

我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序,这就是谈到的数据分层。数据分层并不能解决所有的数据问题。

2:数仓的三层结构

我们将数据模型分为三层:数据运营层( ODS )、数据仓库层(DW)和数据应用层/应用数据存储(APP/ADS)
ODS层存放的是接入的原始数据
DW层是存放我们要重点设计的数据仓库中间层数据
APP/ADS是面向业务定制的应用数据。

1、数据运营层:ODS(Operational Data Store)

"面向主题的"数据运营层,也叫ODS层,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的 ETL 之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。

一般来讲,为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据即可,至于数据的去噪、去重、异常值处理等过程可以放在后面的DWD层来做。

2、数据仓库层:DW(Data Warehouse)

数据仓库层是我们在做数据仓库时要核心设计的一层,在这里,从 ODS 层中获得的数据按照主题建立各种数据模型。DW层又细分为 DWD(Data Warehouse Detail)层、DWM(Data WareHouse Middle)层和DWS(Data WareHouse Servce)层。

1)数据明细层:DWD(Data Warehouse Detail)

该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。 另外,在该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性。

2)数据中间层:DWM(Data WareHouse Middle)

该层会在DWD层的数据基础上,对数据做轻度的聚合操作,生成一系列的中间表,提升公共指标的复用性,减少重复加工。 直观来讲,就是对通用的核心维度进行聚合操作,算出相应的统计指标。

3)数据服务层:DWS(Data WareHouse Servce)

又称数据集市或宽表。按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。

一般来讲,该层的数据表会相对比较少,一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。

3、数据应用层:APP(Application)/ADS

在这里,主要是提供给数据产品和数据分析使用的数据,一般会存放在 ES、PostgreSql、Redis等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 中供数据分析和数据挖掘使用。比如我们经常说的报表数据,一般就放在这里。

3:总结及其他

复制代码
ODS层: 源数据层

    作用: 对接数据源, 和数据源的数据保持相同的粒度(将数据源的数据完整的拷贝到ODS层中)
    注意:
        如果数据来源于文本文件, 可能会需要先对这些文本文件进行预处理(spark)操作, 将其中不规则的数据, 不完整的数据, 脏乱差的数据先过滤掉, 将其转换为一份结构化的数据, 然后灌入到ODS层
    
    一般放置 事实表数据和少量的维度表数据
    
DW层:  数据仓库层
    DWD层: 明细层
        作用: 用于对ODS层数据进行清洗转换工作 , 以及进行少量的维度退化操作
        少量: 
             1) 将多个事实表的数据合并为一个事实表操作
             2) 如果维度表放置在ODS层 一般也是在DWD层完成维度退化
             
    DWM层: 中间层    
        作用:  1) 用于进行维度退化操作  2) 用于进行提前聚合操作(周期快照事实表)
        
    DWS层: 业务层    
        作用: 进行细化维度统计分析操作
        
DA层:  数据应用层
    作用: 存储基于DWS层再次分析的结果, 用于对接后续的应用(图表, 推荐系统...)
    例如:
        比如DWS层的数据表完成了基于订单表各项统计结果信息,  但是图表只需要其中销售额, 此时从DWS层将销售额的数据提取出来存储到DA层

DIM层: 维度层
    作用: 存储维度表数据
相关推荐
weixin_3077791316 小时前
Databricks里用PySpark统计指定表和字段中各字段的空值、空字符串或零值比例
运维·数据仓库·python·spark·云计算
邀星月为媒17 小时前
从零打造一个属于自己的 AI Agent:Core Hive Agent 开源项目解析
人工智能·hive·开源
BI专家之路18 小时前
安装linux/hadoop/jdk/hive
linux·hive·hadoop
2601_962073973 天前
大数据-258 离线数仓 - Griffin架构 配置安装 Livy 架构设计 解压配置 Hadoop Hive
大数据·hadoop·架构
fastjson_3 天前
Hive 基础函数
数据仓库·hive·hadoop
kuroomi3 天前
hadoop高可用架构
hadoop
APItesterCris4 天前
告别人工盯品:借助 OpenClaw 搭建商品自动监控与数据分析系统(完整实操)
大数据·数据库·数据仓库·自动化
千里码aicood4 天前
基于Hadoop的汽车销量分析与可视化
大数据·hadoop·分布式
AbnerWright4 天前
读书笔记-数据密集型应用系统设计
数据仓库
wxchyy5 天前
手把手教你入门云计算(二):这些技术改变了世界,你也能轻松掌握
hadoop·阿里云·docker·云原生·华为云·云计算·运维开发