技术选型
Hadoop-2.7.2,Zookeeper-3.4.10,Flume-1.7.0,Kafka-0.11.0.2,Kafka-manager-1.3.3.22,Sqoop-1.4.6,Mysql,HDFS,Hive-1.2.1,Tez-0.9.1,Presto0.196,yanagishima-18.0,azkaban-2.5.0,Ganglia
整体架构
数仓分层
ODS(原始数据层)不做处理,存放原始数据
DWD(明细数据层)进行简单数据清洗,降维
DWS(服务数据层)进行轻度汇总(做宽表)
ADS(数据应用层)为报表提供数据
分为:用户行为数据仓库和系统业务数据仓库
基础知识
表的分类: 实体表:商品表、用户表
维度表:商品(一、二、三)级分类表
事物型事实表:订单详情表、支付流水表
周期事实表:订单表
同步策略: 全量表:实体表、维度表
增量表:事物型事实表
新增及变化表:周期型事实表
维度建模: 星型模型:模型维度只有一层
雪花模型:模型维度涉及多级
星座模型:基于多个事实表
拉链表
拉链表,记录每条信息的生命周期,一旦一条记录的生命周期结束,就重新开始一条新的记录,并把当前日期放入生效开始日期
适用于:数据会发生变化,但大部分是不变的。
基本原理:生成一张与当前拉链表相同的临时表,在最后插入当前拉链表没有的数据,修改已存在的数据,最后将之前的拉链表覆盖。
代码实现:
1)建立拉链表
hive (gmall)>
drop table if exists dwd_order_info_his;
create external table dwd_order_info_his(
`id` string COMMENT '订单编号',
`total_amount` decimal(10,2) COMMENT '订单金额',
`order_status` string COMMENT '订单状态',
`user_id` string COMMENT '用户id' ,
`payment_way` string COMMENT '支付方式',
`out