电商数仓项目总结

本文总结了一次电商数仓项目的实践经验,包括技术选型如Hadoop、Hive和Flume等,整体架构设计,数仓分层,以及拉链表的基础知识。在问题总结部分,讨论了Sqoop数据导入导出的Null一致性问题和Flume数据丢失问题的解决方案。最后提出了数仓优化措施,如使用Parquet和Tez提升性能。
摘要由CSDN通过智能技术生成

技术选型

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
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值