1. 项目搭建
我们的数仓项目主要分为流量域和业务域,数据仓库的分层为5层,分别是DIM,ODS,DWD,DWS,ADS下面做一下详细介绍.
流量域: 是指用户行为日志的数据
业务域: 是指业务系统的数据
DIM层: 存放一些维度表,比如地理维度表等等
ODS层: 存放流量域和业务域的原始数据
DWD层: 存放明细表,这些数据是由ODS层经过ETL得到的数据
DWS层: 为轻聚合层,是由DWD层的数据进行轻聚合得到的,同时DWS层中的数据分为各种主题,这样会对报表层ADS报表层做一个更好的支持
ADS层: 报表层,根据不同的业务需求而产生的不同的报表
2. 项目搭建具体细节
2.1 数据导入技术选型
在我们的数仓项目中,我们使用了很多的技术,首先流量域的数据,是我们通过flume将数据从kafka中采集到的hdfs中,再由hdfs将数据导入到ODS层中,业务域的数据我们使用sqoop将业务系统数据库(mysql),直接抽取到ODS层中.
2.3 数据清洗和生成全局唯一标识
从ODS层中将数据ETL操作我们主要是对数据进行过滤清洗,还对数据生成全局唯一标识(实际就是对用户生成全局唯一标识),以便于对用户进行分析,我们生成全局唯一标识的方式是动态修改,根据日志将设备和用户id进行绑定,然后进行去重,再根据登录时间进行打分,得分最高的这将这个设备进行最终绑定生成全局唯一标识,这样就会根据一个设备和用户的得分不断的进行调整,从而确定设备和用户的绑定关系.
2.4主题划分及意义
从DWD层将数据进行轻聚合,从而在DWS中得到不同的表,我们会根据业务需求将这些表进行主题分类,比如有新用户留存分析主题,用户活跃度分析主题,用户分布主题,交互事件主题概括主题,站内运营位主题,站外投放主题等等,这些主题表就对ADS层中所需要的报表查询有更好的支