原因
1.处理的数据基本都是以T为单位的,数据量比较大,如果不分层会对处理数据造成很大的困难程度。
2.将复杂的任务分解成多层来完成,每一层只处理简单的任务,方便定位问题。
3.规范数据分层,通过的中间层数据,能够减少极大的重复计算,增加一次计算的复用性。
4.不论是数据的异常还是数据的敏感性,其真实的数据与统计数据解耦开,把我们想要的数据从复杂的数据集中解析出。
分层标准
对于普通的数据分层大致只有五层:ODS,DWD,DWS,DWT,ADS。
- ods(原始数据层):从hdfs取数据,ods存放原始数据,加载原始日志以及数据,不对数据进行任何操作.
- dwd(数据明细层):对ods层来的数据进行清洗(去除空值,脏数据,超过范围的数据)、维度退化、脱敏等。在这一层需要进行维度建模,一般采用星型模型,太会太去实现3FN,在hadoop体系中多次的惊醒jion会降低速率,粒度是一行信息代表一次行为(需要按照自己的需求来决定粒度的大小)。
维度建模的过程:
选择业务过程→声明粒度→确认维度→确认事实
- dws(数据服务层):以dwd层来的数据为基础,按照粒度需求进行轻度汇总。
- dwt(数据主题层):以dws层的数据为基础,按照主题进行汇总。主要是进行数据总体的总结汇总,比如dws层的数据是按照天来计算,那么dwt层的数据就是按照月或者年来计算总结。
- ads(数据服务层):为各种数据报表提供数据。会将ads层的数据传到mysql,方便superset可视化报表的使用