ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【数仓项目记录3】业务数据采集

2022-05-02 12:32:09  阅读:152  来源: 互联网

标签:数仓 范式 记录 建模 采集 维度 Spark 数据 事实


电商常识

image

image

业务表,与用户的操作相关,如添加收藏夹、购物车,下单,支付,退单、退款、评价、领优惠券等
image
后台管理系统面向公司内部开发者,维护商品信息、优惠信息等
image

业务数据的生成

使用项目提供的jar包生成某一日期下的数据,数据存储到hadoop102中的数据库中

Sqoop

Sqoop是Hadoop和关系数据库服务器之间传送数据的一种工具。它是用来从关系数据库如:MySQL,Oracle到Hadoop的HDFS(导入),并从Hadoop的文件系统导出数据到关系数据库。
sqoop底层原理:mapreduce,但只有map没有reduce

表同步策略

image

数仓分层

image

数仓理论

范式

范式其实就是建模需要遵循的一定的规则
目的:降低数据的冗余性
为什么要降低数据冗余性?
(1)十几年前,磁盘很贵,为了减少磁盘存储。
(2)以前没有分布式系统,都是单机,只能增加磁盘,磁盘个数也是有限的
(3)一次修改,需要修改多个表,很难保证数据一致性
缺点:范式的缺点是获取数据时,需要通过Join拼接出最后的数据。
目前业界范式有:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF)。

image

三范式区分

1.属性不可分割
image
2.不能存在(非主键)部分依赖(主键)
image
3.不能存在(非主键)传递依赖(主键)
image

关系建模

关系建模将复杂的数据抽象为两个概念——实体和关系,并使用规范化的方式表示出来。主要应用于业务中的关系型数据库中。
由于三范式的存在,表的数量会比较多,表与表之间的关系较为复杂。
数据冗余程度低,数据的一致性容易得到保证。由于数据分布于众多的表中,查询会相对复杂,在大数据的场景下,查询效率相对较低。

维度建模

当前时代采用的主要建模方式:维度建模
维度模型以数据分析作为出发点,不遵循三范式,故数据存在一定的冗余。维度模型面向业务,将业务用事实表维度表呈现出来。表结构简单,故查询简单,查询效率较高。

维度表和事实表(重点)

维度表:一般是对事实的描述信息。每一张维表对应现实世界中的一个对象或者概念。 例如:用户、商品、日期、地区等。
维表的特征:
维表的范围很宽(具有多个属性、列比较多)
跟事实表相比,行数相对较小:通常< 10万条
内容相对固定:编码表

事实表中的每行数据代表一个业务事件(下单、支付、退款、评价等)。“事实”这个术语表示的是业务事件的度量值(可统计次数、个数、金额等),例如,2020年5月21日,宋宋老师在京东花了250块钱买了一瓶海狗人参丸。维度表:时间、用户、商品、商家。事实表:250块钱、一瓶
每一个事实表的行包括:具有可加性的数值型的度量值、与维表相连接的外键,通常具有两个和两个以上的外键。
事实表的特征:
非常的大
内容相对的窄:列数较少(主要是外键id和度量值)
经常发生变化,每天会新增加很多。

事实表分类:
1)事务型事实表
以每个事务或事件为单位,例如一个销售订单记录,一笔支付记录等,作为事实表里的一行数据。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新
2)周期型快照事实表
周期型快照事实表中不会保留所有数据,只保留固定时间间隔的数据,例如每天或者每月的销售额,或每月的账户余额等。
例如购物车,有加减商品,随时都有可能变化,但是我们更关心每天结束时这里面有多少商品,方便我们后期统计分析。
3)累积型快照事实表(新增及变化同步)
累计快照事实表用于跟踪业务事实的变化。例如,数据仓库中可能需要累积或者存储订单从下订单开始,到订单商品被打包、运输、和签收的各个业务阶段的时间点数据来跟踪订单声明周期的进展情况。当这个业务过程进行时,事实表的记录也要不断更新。

维度模型分类

在维度建模的基础上又分为三种模型:星型模型、雪花模型、星座模型
image
image
ODS层
(1)保持数据原貌不做任何修改,起到备份数据的作用。
(2)数据采用压缩,减少磁盘存储空间(例如:原始数据100G,可以压缩到10G左右)
(3)创建分区表,防止后续的全表扫描
DIM层DWD层需构建维度模型
维度建模一般按照以下四个步骤:
选择业务过程→声明粒度→确认维度→确认事实

DWS层和DWT层统称宽表层,这两层的设计思想大致相同
DWS和DWT层的区别:DWS层存放的所有主题对象当天的汇总行为,例如每个地区当天的下单次数,下单金额等,DWT层存放的是所有主题对象的累积行为,例如每个地区最近7天(15天、30天、60天)的下单次数、下单金额等。
ADS层:对电商系统各大主题指标分别进行分析

数仓环境搭建

Hive on Spark

Hive引擎包括:默认MR、tez、spark
Hive on Spark:Hive既作为存储元数据又负责SQL的解析优化,语法是HQL语法,执行引擎变成了Spark,Spark负责采用RDD执行。(周围生态更好)
Spark on Hive : Hive只作为存储元数据,Spark负责SQL解析优化,语法是Spark SQL语法,Spark负责采用RDD执行。(计算能力更强)
但本项目选择Hive on Spark

注意官网下载的Hive3.1.2和Spark3.0.0默认是不兼容的。因为Hive3.1.2支持的Spark版本是2.4.5,所以需要我们重新编译Hive3.1.2版本。

这里使用的是尚硅谷提供的重新编译的hive3.1.2,解压后替换原有的hive文件夹即可,再替换数据库为mysql。
进入/opt/module/hive/lib 查询ls -al | grep spark,查看spark相关的包是否为3.0.0版本,若是,则说明替换成功。

标签:数仓,范式,记录,建模,采集,维度,Spark,数据,事实
来源: https://www.cnblogs.com/LittleOctopus/p/16215514.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有