目录
1.课程目标和课程内容介绍
2.数仓维度建模设计
3.数仓为什么要分层
4.数仓分层思想和作用
5.数仓中表的种类和同步策略
6.数仓中表字段介绍以及表关系梳理
订单表itcast_orders
订单明细表 itcast_order_goods
商品信息表 itcast_goods
店铺表 itcast_shops
商品分类表 itcast_goods_cats
组织结构表 itcast_org
订单退货表 itcast_order_refunds
用户表 itcast_users
用户收货地址表 itcast_user_address
支付方式表 itcast_payments
7.项目环境初始化
导入MySQL模拟数据
hive分层说明
创建ods层数据表
数据采集
8.缓慢变化维问题以及常见解决方案
9.商品案例-每日全量采集方案
10.每日全量案例实现
MySQL&Hive初始化 编辑
增量导入12月20日数据
增量导入12月21日数据
增量导入12月22日数据
11.拉链表技术介绍
12.拉链表技术实现-第一次导入数据到拉链表
MySQL&Hive表初始化
全量导入2019年12月20日数据
13.拉链表技术实现-历史数据更新
增量导入2019年12月21日数据
MySQL数据库导入12月21日数据(6条数据)
使用Kettle开发增量同步MySQL数据到Hive ods层表
编写SQL处理dw层历史数据,重新计算之前的dw_end_date
14.拉链表技术实现-新增数据插入以及合并
15.商品维度数据第一次全量导入拉链表
dw层建表
具体步骤
全量导入
使用Kettle将20190909以前的数据抽取到ods
使用spark sql将全量数据导入到dw层维度表
16.商品维度数据第二次增量导入
使用Kettle将20190910创建的 或者修改的数据抽取到ods
编写spark-sql更新历史数据
编写spark-sql获取当日数据
将历史数据 当日数据合并加载到临时表
17.周期性事实表同步操作
创建dw层订单拉链表、订单退款拉链表编辑
第一次全量数据导入拉链表
增量数据导入拉链表
kettle抽取增量数据导入ods层编辑
ods层数据合并到dw层拉链表中
拉链表分区意义编辑
18.其余表增量抽取
1.课程目标和课程内容介绍
2.数仓维度建模设计
3.数仓为什么要分层
4.数仓分层思想和作用
下面是阿里的一种分层方式
5.数仓中表的种类和同步策略
6.数仓中表字段介绍以及表关系梳理
订单表itcast_orders
订单明细表 itcast_order_goods
商品信息表 itcast_goods
店铺表 itcast_shops
商品分类表 itcast_goods_cats
组织结构表 itcast_org
订单退货表 itcast_order_refunds
用户表 itcast_users
用户收货地址表 itcast_user_address
支付方式表 itcast_payments
7.项目环境初始化
导入MySQL模拟数据
将SQL文件上传到Linux
登入MySQL并执行命令
已经上传成功
hive分层说明
登入hive,创建表
创建ods层数据表
因为后面要用spark执行,spark对我们的Parquet和Snappy是执行的最好的
粘贴过来执行
数据采集
这里的命令可以帮我们对hive分区表进行一个修复
将小于${dt}(默认时间点)之前的当做全量要采集的数据,直接采集过来
我们打开kettle看一下
这里的${dt}是我们的默认命名参数
我们双击转换的空白处,看一下
上面的三张表是使用${dt}限制的
其余的表都是全量采集
比如
下面看一下字段选择
里面的每一个时间字段都要指定格式
下面看一下字段选择
这里我们要指定路径,
我们要写数据到hive表,使用表输出的方式太慢
我们直接将数据文件生成到hdfs路径上,这个路径就是我们的某一张hive表对应的路径
要指定hadoop cluster的连接
由于我们全是分区表,所以我们要加上分区文件的路径
所有的date类型要改成utf-8,date后面会出现问题
因为我们前面已经指定了格式
这里我们就按照字符串的形式写进去
==================================================================================================================================================
上面设置结束后,我们就可以执行我们的作业
我们再去hive表里面验证一下
8.缓慢变化维问题以及常见解决方案
9.商品案例-每日全量采集方案
10.每日全量案例实现
MySQL&Hive初始化
先创建库
上面表创建成功
增量导入12月20日数据
这里主要是帮我们添加一个分区(如果分区不存在,就添加)
最后双击空白处
调整转换命名参数
上面已经成功导入hive的ods层了,已经查询到
下面再将数据导入维度表,导入dw层
增量导入12月21日数据
运行之后是将数据存储到了ods的12月21号的分区
我们查看一下
如果我们查询的时候没有指定分区,应该有10条数据
增量导入12月22日数据
11.拉链表技术介绍
12.拉链表技术实现-第一次导入数据到拉链表
MySQL&Hive表初始化
这里的表不是分区表了,用一张大表构建
全量导入2019年12月20日数据
13.拉链表技术实现-历史数据更新
增量导入2019年12月21日数据
MySQL数据库导入12月21日数据(6条数据)
这里我们总共要采集001、005、006三条数据
他们的modifytime的字段一定是21号的
使用Kettle开发增量同步MySQL数据到Hive ods层表
这里首先执行的SQL语句是hive进行操作的
这里的SQL操作就是根据modifytime字段,找出新增或者更新的数据
编写SQL处理dw层历史数据,重新计算之前的dw_end_date
=============================
注意:这里很重要,因为有可能我们的表经过多次更新
但我们只需要修改最近一次的更新的那一条数据
14.拉链表技术实现-新增数据插入以及合并
最后的效果
15.商品维度数据第一次全量导入拉链表
dw层建表
具体步骤
全量导入
使用Kettle将20190909以前的数据抽取到ods
使用spark sql将全量数据导入到dw层维度表
在使用spark时,要先整合spark SQL到hive中
下面启动一下spark SQL
有上面的路劲就说明启动成功了
执行SQL命令
执行结束
由于在spark SQL中执行查询,格式不好看
还是使用hive去查看
16.商品维度数据第二次增量导入
使用Kettle将20190910创建的 或者修改的数据抽取到ods
编写spark-sql更新历史数据
这里的更新,只更新了dw_end_date
上面就是使用spark SQL更新历史拉链表中的数据
在spark SQL中运行一下
编写spark-sql获取当日数据
将历史数据 当日数据合并加载到临时表
我们还是在spark SQL中运行,速度会快一点
17.周期性事实表同步操作
创建dw层订单拉链表、订单退款拉链表
增量合并的时候,先将数据合并到我们的临时表中
在从临时表导入我们的拉链表中
在hive中执行上面的SQL语句
第一次全量数据导入拉链表
首先使用kettle将数据从MySQL全量采集到ods层
下面我们看一下数据是否插入成功
增量数据导入拉链表
kettle抽取增量数据导入ods层
ods层数据合并到dw层拉链表中
拉链表分区意义
这里的订单表每天都有大批量的增加
这里做一个优化
如果有分区的话
可能只拿一段时间之内的数据进行校验,提高性能
18.其余表增量抽取
我们选一个表验证一下