大数据数仓实战项目(离线数仓+实时数仓)2

目录

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.其余表增量抽取

我们选一个表验证一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/965513.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Android】jni开发之导入opencv和libyuv来进行图像处理

做视频图像处理时需要对其进行水印的添加,放在应用层调用工具性能方面不太满意,于是当下采用opencvlibyuv方法进行处理。 对于Android的jni开发不是很懂,我的需求是导入opencv方便在cpp中调用,但目前找到的教程都是把opencv作为模…

理解 C 与 C++ 中的 const 常量与数组大小的关系

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯数组大小的常量要求💯C 语言中的数组大小要求💯C 中的数组大小要求💯为什么 C 中 const 变量可以作为数组大小💯进一步的…

小菜鸟系统学习Python第六天

1.函数: 2.全局变量加global(这里博主记混了,global使用的时候不能赋值,然后就错了两回) 3.内嵌函数 4.闭包 存在嵌套函数:在一个函数内部定义另一个函数。内部函数引用外部函数的变量:内部函数使用了外部函数作用域中的变量。外部函数返回内部函数&…

【STM32系列】利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程)

ps.源码放在最后面 设计FIR数字滤波器可以看这里:利用MATLAB配合ARM-DSP库设计FIR数字滤波器(保姆级教程) 设计IIR滤波器 MATLAB配置 设计步骤 首先在命令行窗口输入"filterDesigner",接着就会跳出以下界面&#xf…

WSL2中安装的ubuntu搭建tftp服务器uboot通过tftp下载

Windows中安装wsl2,wsl2里安装ubuntu。 1. Wsl启动后 1)Windows下ip ipconfig 以太网适配器 vEthernet (WSL (Hyper-V firewall)): 连接特定的 DNS 后缀 . . . . . . . : IPv4 地址 . . . . . . . . . . . . : 172.19.32.1 子网掩码 . . . . . . . .…

ES冷热数据分离配置

冷热数据是根据索引创建时间来进行迁移的。一旦迁移到冷数据节点,则无法再恢复成热数据,因为热数据节点中该索引已经没有分片存在了。 基于Docker搭建ES集群,并设置冷热数据节点 配置冷热数据迁移策略 PUT https://192.168.x.xx:19200/_ilm/policy/my…

Javaweb学习日记(十一)Mybatis-基础操作

一、环境准备 二、基础操作-删除 日志输出: SQL注入: sql注入:例如一个登录页面,需要满足账号密码同时匹配数据库内的数据才可登录(点击登录也页面在后台生成一条sql语句去检验是否正确(通过判断sql语句返…

小程序-基础加强

前言 这一节把基础加强讲完 1. 导入需要用到的小程序项目 2. 初步安装和使用vant组件库 这里还可以扫描二维码 其中步骤四没什么用 右键选择最后一个 在开始之前,我们的项目根目录得有package.json 没有的话,我们就初始化一个 但是我们没有npm这个…

Spring @PropertySource:让你的应用配置更加模块化和可维护

PropertySource注解在Spring中的作用,就像是给Spring应用配了一个“外部配置箱”。 想象一下,你在开发一个Spring应用时,有很多配置信息需要设置,比如数据库的连接信息、应用的某些功能开关等。如果这些信息都硬编码在代码中&…

尝试在Excel里调用硅基流动上的免费大语言模型

我个人觉得通过api而不是直接浏览器客户端聊天调用大语言模型是使用人工智能大模型的一个相对进阶的阶段。 于是就尝试了一下。我用的是老师木 袁进辉博士新创的硅基流动云上的免费的大模型。——虽然自己获赠了不少免费token,但测试阶段用不上。 具体步骤如下&am…

问卷数据分析|SPSS之分类变量描述性统计

1.点击分析--描述统计--频率 2. 选中分类变量,点击中间箭头 3.图表选中条形图,图表值选择百分比,选择确定 4.这里显示出了描述性统计的结果 5.下面就是图形,但SPSS画的图形都不是很好啊看,建议用其他软件画图&#xff…

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)

今天小李哥将开启全新的技术分享系列,为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来,生成式 AI 安全市场正迅速发展。据 IDC 预测,到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元,年复合增长率超过 30%…

LQB(0)-python-基础知识

一、Python开发环境与基础知识 python解释器:用于解释python代码 方式: 1.直接安装python解释器 2.安装Anaconda管理python环境 python开发环境:用于编写python代码 1.vscode 2.pycharm # 3.安装Anaconda后可以使用网页版的jupyter n…

SQL Server 数据库备份指南

SQL Server备份是数据库维护的日常工作。备份的目的是在发生数据丢失、损坏甚至硬件故障时将数据库和事务日志恢复到最近的时间点。您可以借助专业的SQL Server备份软件,操作起来更方便。前提需要安装SQL Server Management Studio (SSMS)工具。 对于 SQL 数据库备份,有多种…

常见Linux命令的复习

常见命令 ls 列出工作目录 ls -l:以长格式显示目录下的文件和子目录信息。ls -a:显示所有文件和子目录,包括隐藏文件 ll 列出该目录下的详细信息 看到该目录下的所有目录和文件的详细信息 cd 切换当前工作目录里 cd /path/to/directory&…

spring aop失效场景

aop基于代理(jdk动态代理 / cglib代理)实现,即new了新的类实例,代理了原来的定义的类实例。 目录 1. final修饰的方法无法被代理2. 静态方法无法被代理3. 内部方法调用,即this.method()无法被代理4. 私有方法不能代理5…

PostgreSQL函数自动Commit/Rollback所带来的问题

一、综述 今天在PostgreSQL遇到一个奇怪的现象,简而言之,是想用函数(存储过程)实现插入记录,整个过程没报错但事后却没找到记录!忙活半天,才发现原因是PostgreSQL函数(存储过程&…

Ollama+deepseek+Docker+Open WebUI实现与AI聊天

1、下载并安装Ollama 官方网址:Ollama 安装好后,在命令行输入, ollama --version 返回以下信息,则表明安装成功, 2、 下载AI大模型 这里以deepseek-r1:1.5b模型为例, 在命令行中,执行&…

Immutable设计 SimpleDateFormat DateTimeFormatter

专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解不可变设计模式,时间format有线程安全要求的注意使用DateTimeFormatter 目录 ImmutableSimpleDateFormat 非线程安全可以synchronized解决&a…

基于Hexo实现一个静态的博客网站

原文首发:https://blog.liuzijian.com/post/8iu7g5e3r6y.html 目录 引言1.初始化Hexo2.整合主题Fluid3.部署评论系统Waline4.采用Nginx部署 引言 Hexo是中国台湾开发者Charlie在2012年创建的一个开源项目,旨在提供一个简单、快速且易于扩展的静态博客生…