大数据电商数仓项目

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 大数据电商数仓项目

一、项目整体架构


image.png


二、数据说明


2.1 用户行为数据

1、启动日志数据

是一个单 json 数据

2、事件日志数据

组成:时间戳、公共字段、事件日志

事件:

(1) 商品列表

(2) 商品点击

(3) 商品详情

(4) 广告

(5) 消息通知

(6) 用户后台活跃

(7) 评论

(8) 收藏

(9) 点赞

(10) 错误日志


2.2 业务数据

1、订单表

2、订单详情表

3、sku 商品表

4、用户表

5、商品一级分类表

6、商品二级分类表

7、商品三级分类表

8、支付流水表

9、省份表

10、地区表

11、品牌表

12、订单状态表

13、spu 商品表

14、商品评论表

15、退单表

16、加购表

17、商品收藏表

18、优惠券领用表

19、优惠券表

20、活动表

21、活动订单关联表

22、优惠规则表

23、编码字典表

24、活动参与商品表

25、时间表

26、假期表

27、假期年表


三、数据导入 hdfs


3.1 用户行为数据

1、用户行为数据产生

2、日志采集 flume 配置

(1) source 为 TaildirSource。

(2) channel 为 kafka channel,省去了 sink。

(3) 自定义 flume 拦截器。

自定义了两个拦截器,分别是:ETL 拦截器、日志类型区分拦截器。

ETL 拦截器:过滤时间戳不合法和 Json 数据不完整的日志。

日志类型区分拦截器:将启动日志和事件日志区分开来,方便发往 Kafka 的不同 Topic。

3、日志消费 Flume 配置

(1) source 为 kafkaSource。

(2) channel 为 fileChannel。

(3) sink 为 hdfs 上两个路径,用 lzo 压缩。


3.2 业务数据

1、流程

sqoop 导 mysql 表到 hdfs 上,也用 lzo 压缩。

2、数据同步策略

(1) 数据同步策略介绍

数据同步策略的类型包括:全量表、增量表、新增及变化表。

全量表:存储完整的数据。

增量表:存储新增加的数据。

新增及变化表:存储新增加的数据和变化的数据。

(2) 全量同步策略

每日全量,就是每天存储一份完整数据,作为一个分区。

适用于表数据量不大,且每天既会有新数据插入,也会有旧数据修改的场景。

例如:编码字典表、品牌表、商品三级分类、商品二级分类、商品一级分类、优惠规则表、活动表、活动参与商品表、加购表、商品收藏表、优惠券表、sku 商品表、spu 商品表。

image.png

(3)增量同步策略

每日增量,就是每天存储一份增量数据,作为一个分区。

适用于表数据量大,且每天只会有新数据插入的场景。例如:退单表、订单状态表、订单详情表、活动与订单关联表、商品评论表。

image.png

(4) 新增及变化策略

每日新增及变化,就是存储创建时间或操作时间都是今天的数据。

适用场景为:表的数据量大,既会有新增,有会有变化。

例如:用户表、订单表、优惠券领用表。

(5) 特殊策略

某些特殊的维度表,可不必遵循上述同步策略。

A、客观世界维度

没变化的客观世界的维度(比如性别、地区、民族、政治成分、鞋子尺码)可以只存一份固定值。

B、日期维度

日期维度可以一次性导入一年或若干年的数据。

C、地区维度

省份表、地区表

3、图示


四、数仓基本知识


4.1 为什么要数仓分层?

1、把复杂问题简单化

将复杂的任务分解为多层来完成,每一层只处理简单的任务,方便定位问题。


2、减少重复开发

规范数据分层,通过中间层数据,能够大量减少重复计算,增加一次计算结果的复用性。


3、隔离原始数据

无论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开。


4.2 图示分层结构

image.png

4.3 数仓命名规范

1、表命名

ods 层命名为 ods_表名

dwd 层命名为 dwd_dim/fact_表名

dws 层命名为 dws_表名

dwt 层命名为 dwt_表名

ads 层命名为 ads_表名

临时表命名为 xxx_tmp

用户行为表,以 log 为后缀


2、脚本命名

数据源_to_目标_db/log.sh

用户行为脚本以 log 为后缀,业务数据脚本以 db 为后缀。

3.图示

image.png

4.4 维度建模

维度建模基础上分三种模型:星型模型、雪花模型、星座模型。

1、星型模型

image.png

2、雪花模型

image.png

3、星座模型

image.png

4、模型选择

image.png


4.5 维度表和事实表

1、维度表

(1) 维度表介绍

一般是对事实的描述信息,每一张维度表对应现实世界的一个对象或者概念。例如:用户、商品、日期、地区等。

(2) 维度的特征

A、维度的范围很宽(具有多个属性、列比较多)

B、和事实表相比,行数比较少,通常 < 10 万条

C、内容相对固定:编码表


2、事实表

(1) 事实表介绍

事实表中的每行数据代表一个业务事件(下单、支付、退款、评价等)。"事实"这个术语表示的是业务事件的度量值(可统计次数、个数、件数、金额等),例如,订单事件中的下单金额。


(2) 事实表包括

每一个事实表的行包括:具有可加性的数值型的度量值、与维度相连接的外键、通常具有两个和两个以上的外键、外键之间表示维表之间多对多的关系。


(3) 事实表的特征

A、非常的大

B、内容相对的窄,列数较少

C、经常发生变化,每天会新增加很多


3、事实表分类

(1) 事务型事实表

以每个事务或事件为单位,例如一个销售订单记录,一笔支付记录等,作为事实表里的一行数据。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。


(2) 周期型快照事实表

周期型事实表中不会保留所有数据,只保留固定时间间隔的数据,例如每天或者每月的销售额,或每月的账户余额等。


(3) 累积型快照事实表

累计快照事实表用于跟踪业务事实的变化。例如,数据仓库中可能需要累积或者存储订单从下订单开始,到订单商品被打包、运输、和签收的各个业务阶段的时间点数据来跟踪订单声明周期的进展情况。当这个业务过程进行时,事实表的记录也要不断更新。


4.6 数据仓库建模

1、ods 层

(1) 保持数据原貌不做任何修改,起到备份数据的作用。

(2) 数据采用压缩,减少磁盘存储空间(例如:原始数据 100G,可以压缩到 10G 左右)。

(3) 创建分区表,防止后续的全表扫描。


2、dwd 层

dwd 层需要构建维度模型,一般采用星型模型,呈现的状态一般为星座模型。

维度建模一般按照以下四个步骤:

选择业务过程 -> 声明粒度 -> 确认维度 -> 确认事实。


(1) 选择业务过程

在业务系统中,挑选我们感兴趣的业务线,比如下单业务、支付业务、退款业务、物流业务,一条业务线对应一张事实表。


(2) 声明粒度

数据粒度是指数据仓库中的数据保存数据的细化程度和综合程序的级别。

声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度,以此来应对各种各样的需求。

典型的粒度声明如下:

订单中,每个商品项作为下单事实表中的一行,粒度为每次下单。

每周的订单次数作为一行,粒度就是每周下单。

每月的订单次数作为一行,粒度就是每月下单。


(3) 确定维度

维度的主要作用是描述业务是事实,主要表示的是"谁、何处、何时"等信息。


(4) 确定事实

此处的事实一词,指的是业务中的度量值,例如订单金额、下单次数等。

在 dwd 层,以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的明细层事实表。事实表可做适当的宽表化处理。

image.png

image.png


3、dws 层

统计各个主题对象的当天行为,服务于 dwt 层的主题宽表,以及一些业务明细数据,应对特殊需求。

每日设备行为、每日会员行为、每日商品行为、每日优惠券统计(预留)、每日活动统计(预留)、每日购买行为(预留)。


4、dwt 层

以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建主题对象的全量宽表。

设备主题、会员主题、商品主题、优惠券主题(预留)、活动主题(预留)、购买主题(预留)。


5、ads 层

对电商系统各大主题指标分别进行分析。


五、ods 层架构


电商数仓(ods 层)_a1786742005的博客-CSDN博客


六、dwd 层架构


电商数仓(dwd 层)_a1786742005的博客-CSDN博客_dwd层


七、dws 层架构


电商数仓(dws 层)_a1786742005的博客-CSDN博客_dws层


八、dwt 层架构


电商数仓(dwt 层)_a1786742005的博客-CSDN博客_dwt层


九、ads 层架构


电商数仓(ads 层)_a1786742005的博客-CSDN博客_ads层


十、项目总结


1、搭建数据仓库,提前做好需求分析,很关键。

2、整个数据仓库中 ods 层 25 张表,dwd 层 26 张表,dws 层 6 张表,dwt 层 5 张表,ads 层 19 张表,共计 81 张表。


相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
2月前
|
8天前
|
SQL 存储 分布式计算
MaxCompute近实时数仓能力升级
本文介绍了阿里云自研的离线实时一体化数仓,重点涵盖MaxCompute和Hologres两大产品。首先阐述了两者在ETL处理、AP分析及Serverless场景中的核心定位与互补关系。接着详细描述了MaxCompute在近实时能力上的升级,包括Delta Table形态、增量计算与查询支持、MCQ 2.0的优化等关键技术,并展示了其性能提升的效果。最后展望了未来在秒级数据导入、多引擎融合及更高效资源利用方面的改进方向。
|
3月前
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
270 6
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
2月前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
78 1
|
3月前
|
机器学习/深度学习 监控 搜索推荐
电商平台如何精准抓住你的心?揭秘大数据背后的神秘推荐系统!
【10月更文挑战第12天】在信息爆炸时代,数据驱动决策成为企业优化决策的关键方法。本文以某大型电商平台的商品推荐系统为例,介绍其通过收集用户行为数据,经过预处理、特征工程、模型选择与训练、评估优化及部署监控等步骤,实现个性化商品推荐,提升用户体验和销售额的过程。
118 1
|
2月前
|
数据采集 分布式计算 OLAP
最佳实践:AnalyticDB在企业级大数据分析中的应用案例
【10月更文挑战第22天】在数字化转型的大潮中,企业对数据的依赖程度越来越高。如何高效地处理和分析海量数据,从中提取有价值的洞察,成为企业竞争力的关键。作为阿里云推出的一款实时OLAP数据库服务,AnalyticDB(ADB)凭借其强大的数据处理能力和亚秒级的查询响应时间,已经在多个行业和业务场景中得到了广泛应用。本文将从个人的角度出发,分享多个成功案例,展示AnalyticDB如何助力企业在广告投放效果分析、用户行为追踪、财务报表生成等领域实现高效的数据处理与洞察发现。
130 0
|
5月前
|
BI
数仓项目总结--持续更新中
数仓项目总结--持续更新中
75 2
|
5月前
|
消息中间件 存储 大数据
大数据-数据仓库-实时数仓架构分析
大数据-数据仓库-实时数仓架构分析
180 1
|
5月前
|
监控 Java 开发者
揭秘Struts 2性能监控:选对工具与方法,让你的应用跑得更快,赢在起跑线上!
【8月更文挑战第31天】在企业级应用开发中,性能监控对系统的稳定运行至关重要。针对流行的Java EE框架Struts 2,本文探讨了性能监控的工具与方法,包括商用的JProfiler、免费的VisualVM以及Struts 2自带的性能监控插件。通过示例代码展示了如何在实际项目中实施这些监控手段,帮助开发者发现和解决性能瓶颈,确保应用在高并发、高负载环境下稳定运行。选择合适的监控工具需综合考虑项目需求、成本、易用性和可扩展性等因素。
52 0
|
5月前
|
SQL 大数据 分布式数据库
SQL与大数据的神秘力量:如何用高效SQL处理海量数据,让你的项目一鸣惊人?
【8月更文挑战第31天】在现代软件开发中,处理海量数据是关键挑战之一。本文探讨了SQL与大数据结合的方法,包括数据类型优化、索引优化、分区优化及分布式数据库应用,并通过示例代码展示了如何实施这些策略。通过遵循最佳实践,如了解查询模式、使用性能工具及定期维护索引,开发者可以更高效地利用SQL处理大规模数据集。随着SQL技术的发展,其在软件开发中的作用将愈发重要。
147 0