1——Hive数仓项目完整流程(在线教育)

news2024/11/26 10:03:50

目录

前言

一、项目架构

二、软件相关作用

1.大数据相关软件

2.数仓

        2.1数据仓库与数据库

        2.2数据仓库和数据集市

        2.3维度分析

        2.4指标

3.数仓建模

        3.1建模理论

        3.2维度建模

        3.3维度建模的三种模型

        3.4缓慢渐变维

总结



前言

本专栏以大数据实战“在线教育项目”为导向系统学习Hive数仓


一、项目架构

本项目基于Cloudera Manager 大数据统一管理平台,在次平台构建大数据相关的软件(Zookeeper、HDFS、YARN、Hive、oozie、Sqoop、HUE)最后使用 FineBI 报表展示

二、软件相关作用

1.大数据相关软件

HDFS:负责最终数据的存储                        YARN:主要提供资源的分配

Hive:用于编写SQL进行数据分析                oozie:用来做自动化定时调度

Sqoop:用于数据的导入导出                        HUE:提升操作Hadoop的用户体验,基于HUE操作HDFS、Hive......

数据流转的流程:首先,业务数据是存储在MySQL数据库中,通过Sqoop对MySQL的数据进行数据的导入操作,将数据导入至Hive的ODS层中,对数据进行清洗、转换、处理工作,处理之后对数据进行统计分析,将统计分析的结果基于Sqoop在导出到MySQL中,最后使用FineBI实现图展示操作,由于分析工作是需要周期性工作,采用oozie进行自动化的调度工作,整个项目基于Cloudera Manager进行统一化管理...

 


⚠️⚠️⚠️ (每个节点都需要执行)

虚拟机的关机方式:

        ·关机:shutdown -h now

        ·重启:reboot

⚠️⚠️⚠️


2.数仓

        2.1数据仓库与数据库

  • 数据仓库:存储数据的仓库,主要用于存储过去既定发生的历史数据,对这些数据进行分析操作,从而对未来提供决策支持
  • 数据仓库的最大特点:既不生产数据,也不消耗数据;数据来源于各个数据源
  • 数据仓库的四大特征:1.面向于主题:面向于分析,分析内容与主题一致                                                            2.集成性:数据来源于各个数据源,将各数据源汇总在一起                                              3.非易失性(稳定性):存储在数仓中的数据都是过去既定发生                                                    的数据,相对稳定,不会发生改变                                                                       4.时变性:随着时间推移,原有分析手段及原有数据可能出现变化
  • ETL:Extract-Transform-Load(抽取、转换、加载),指数据从数据源将数据灌入到ODS层以及从ODS层将数据抽取出来,对数据进行转换处理工作,最终将数据加载到DW层,然后DW层对数据进行统计分析,将分析后的数据灌入到DA层,整个过程都属于ETL的范畴。狭义上的ETL指从ODS层到DW层的过程
  • 数据仓库和数据库区别:
    • 1. 数据库(OLTP):面向于事务(业务)的,主要用于捕获数据,主要存储最近一段时间的业务数据,交互性强(延迟低)一般不允许数据冗余
    • 2.数据仓库(OLAP):面向于分析(主题)的,主要用于分析数据,主要存储过去的历史数据,延迟高(交互性弱),一般允许数据冗余
OLTP与OLAP区别
OLTPOLAP
功能面向交易的事务处理面向分析查询
设计面向业务面向主题

数据

最新数据(二维数据)历史数据(多维数据)
存储M、G(单位)T、P、E
响应时间
用户业务操作人员管理决策人员

        2.2数据仓库和数据集市

  • 数据仓库:指集团数据中心,主要将公司中所有数据集中聚集在一起进行相关的处理操作(ODS层),一般与主题无关
  • 数据集市(小型数据仓库):在数仓基础之上,基于主题对数据进行抽取处理分析工作,形成最终分析的结果,一个数仓下可有多个集市

        2.3维度分析

  • 维度,一般指分析的角度,看待一个问题时可有多个角度就是维度。(如,有2022年订单数据,尝试分析;可以从时间、地域、商品....)
  • 维度可分为定性维度定量维度
    • 定性维度:指计算每天、每月...各个维度,一般定性维度的字段都在grou by 后
    • 定量维度:指的统计某一个具体的维度或者某一范围下的信息,一般定量维度的字段在 where 后。(如统计2022年订单中20~30岁区间人群人数)
  • 维度的上卷、下钻:以某一维度为基准,往细化统计的过程称为下钻;往粗粒度称为上卷
    • 如:按照天统计,需统计出小时,指的是下钻,需统计季度、月、年成为上卷
    • 从实际分析中,意味着统计的维度变得更多

        2.4指标

  • 指标:指衡量事务发展的标准,就是度量值;常见度量值:count()、sum()、avg().....
  • 指标可分为绝对指标相对指标
    • 绝对指标:计算具体的值指标。count()、max()、min()、avg()
    • 相对指标:计算比率问题的指标。转化率、流失率....
  •  需求:在2022年度,女性、未婚、18~25岁,用户每一天的订单量
    • 维度:时间维度、性别、婚姻状况、年龄
      • 定量维度:2022年度、18~25、女
    • 指标:订单量(绝对指标)===> count()

3.数仓建模

        3.1建模理论

数仓建模:指如何在Hive中建表,主要提供两种理论进行数仓建模操作

  • 三范式建模:主要是存在关系型数据库建模方案上,规定了比如建表的每一表都应该有一个主键,数据要经历的避免冗余发生
  • 维度建模:主要存在分析性数据库建模方案上,主要一切以分析为目标,只要有利于分析的建模都可以,允许出现一定的冗余,表也可以无主键

 三范式建模:SQL需要进行三表关联

 维度建模:SQL只需要操作一张表

        3.2维度建模

维度建模的两个核心概念:事实表维度表

  • 事实表,指分析主题所对应的表,每一天数据用于描述一个具体的事实信息,这些表都是由一堆主键(外键)和描述事实字段的聚集。(一般需要计算的指标字段所在表都是事实表)
  • 事实表分为:
    • 事务事实表,保存的是原子的数据,也称原子事实表;交易事实表。一般常说的事实表,大多指事务事实表
    • 周期快照事实表,其以具有规律性的·可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等,其由事务表加工产生
    • 累计快照事实表,完全覆盖一个事务或产品的生命周期的时间跨度,通常具有多个日期字段,用来记录整个生命周期的关键时间节点
  • 维度表,指的是在对事实表进行统计分析时,基于某一个维度,而这个维度信息可能在其他表中,而这些表就是维度表
  • 维度表不一定存在,但维度一定存在。如:
    • 根据用户维度进行统计,如果在事实表只存储了用户 id ,此时需要关联用户表,这个时候就是维度表
    • 根据用户维度进行统计,如果在事实表不仅仅存储了用户 id 还存储了用户名称,这时候有用户维度,但不需要用户表的参与,意味着没有这个维度表
  • 维度表分为高基数维度表低基数维度表 
    • 高基数维度表,指表中数据量庞大,而且数据也在发生变化(商品表、商品表)
    • 低基数维度表,指表中数据量不大,一般几十到几千条,并且数据相对稳定(日期表、配置表、区域表)

        3.3维度建模的三种模型

  • 星型模型
    • 特点:只有一个事实表,就意味着只有一个分析主题,在事实表周围有多少个维度表,并且维度表之间没有任何依赖
    • 数仓发展初期最容易产生的模型
  • 雪花模型
    • 特点:只有一个事实表,意味着一个分析主题,在其周围有多个维度表,维度表之间有关联
    • 数仓发展出现畸形产生模型,这种模型一旦出现,对后期维护非常繁琐,依赖层次越大,SQL越难(尽量减少此种模型产生)
  • 星座模型
    • 特点:有多个事实表,意味着多个分析主题,在事实表周围有多个维度表,多个事实表在条件符合的情况下,可以共享维度表
    • 数仓发展中后期最容易产生的模型

        3.4缓慢渐变维

缓慢渐变维:解决历史变更数据是否需要维护的情况

  1. SCD1,直接覆盖,不维护历史变化数据;主要适用于对错误数据处理
  2. SCD2,不删除,不修改已存在的数据,当数据发生变更后,会添加一条新版本记录的数据。在建表的时候,会多加两个字段(起始时间,截至时间)通过这两个字段来标记每条数据的起止时间,一般称为“拉链表”
    1. 适用于多个历史版本,方便维护实现。
    2. 易造成数据冗余,导致磁盘占用率提升
  3. SCD3,通过增加列的方式来维护历史变化数据,可减少数据冗余,适用于少量历史版本的记录及磁盘空间不是特别充足的情况,但无法记录更多的历史版本,以及维护比较繁琐

例子: 张三1-6月份在北京消费100W

原始数据:

 

后来由于工作原因7月份搬到上海消费100W

SCD1:直接覆盖

SCD2:增加两个字段,添加一行

 

SCD3:在原始数据基础上添加新的一列

 

 

 


总结

        以上就是本篇所要阐述的全部内容,主要讲解了本项目索要用到的各种软件以及部分数仓的理论知识,之后将以项目为驱动对数仓进行系统的学习。

        以上内容有什么不恰当的地方,也欢迎大佬前来赐教,同时也希望可以帮到大家!!!谢谢大家!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP 动态编程-动态获取结构字段对象(类模式)

实施方法 GET_DYNAMIC_FIELD_OBJECT 参数 代码 DATA: lt_source TYPE TABLE OF string.DATA: lv_name TYPE sy-repid VALUE ZTEMP_GET_DYNAMIC_OBJECT,lv_form(30) TYPE c VALUE FRM_GENERATE_OBJECT,lv_message(240) TYPE c,lv_line TYPE i,lv_word(72…

JVM GC ROOT分析

GC root原理:通过对枚举GCroot对象做引用可达性分析,即从GC root对象开始,向下搜索,形成的路径称之为 引用链。如果一个对象到GC roots对象没有任何引用,没有形成引用链,那么该对象等待GC回收,换而言之,如果减少内存泄漏,也就是切断引用链,常见的GCRoot对象如下: 1、…

基于双端口RAM的乒乓操作测试

文章目录 前言一、乒乓操作简介二、双端口RAM配置三、RAM控制模块设计四、乒乓操作验证 前言 本文将介绍基于双端口RAM的乒乓操作测试,并探索如何在AWC_C4MB开发板上实现这一测试。双端口RAM作为一种性能出色且功能强大的存储器设计,为我们提供了并发访问…

PCB布线当中的地线和电源线的规划和处理

在PCB布线中,地线和电源线的规划和布局非常重要,可以影响电路的稳定性、抗干扰能力和信号质量。下面是一些常见的规划和布局建议: 分离地平面:将地线分为模拟地和数字地两个区域,并使用两个独立的地平面来布线。这样可…

MySql007——检索数据:排序检索数据(ORDER BY的使用)

前提:使用《MySql006——检索数据:基础select语句》中创建的products表 一、抛出问题 如果我们向获得products表中所有商品名称和价格,可以这些检索数据 SELECT prod_name, prod_price FROMproducts;但是发现这些价格是乱序的,…

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(7 月 28 日论文合集)

文章目录 一、分割|语义相关(6篇)1.1 To Adapt or Not to Adapt? Real-Time Adaptation for Semantic Segmentation1.2 Towards Deeply Unified Depth-aware Panoptic Segmentation with Bi-directional Guidance Learning1.3 Semantic Image Completion and Enhancement usin…

PTC Preo creo弹出框 重新获得许可 取消弹出框方法

问题:打开proe软件之后,在使用时,会有【重新获得浮动许可证】的弹出框提示 解决办法: 1.重新打开proe 2.配置proe参数,Proe打开软件,打开选项 Proe用好多版本,打开的界面都不一样&#xff0c…

一零六六、线程池、锁

线程池: 管理线程创建,销毁的一系列池子 如何创建线程池? ExecutorService executor Executors.newFixedThreadPool(n); 创建线程有多种方法,为何要用线程池? 减少性能开销,每次执行任务都新建线程造成cpu资源浪费…

【雕爷学编程】Arduino动手做(181)---Maixduino AI开发板11

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

低代码平台的使用学习

背景 最近发现老婆每天都要捣鼓一个 excel 表格,并将表格发到群中,询问后才知道只是为了记录每天的事物变化。我想这接收方每次都要下载表格再打开看,太麻烦了,直接做个 web 表单,支持简单的增删改查就好了。 当我着…

Talk | ICCV‘23 华南理工大学林炜丰:视觉基础模型-尺度卷积调制遇上Transformer

本期为TechBeat人工智能社区第519期线上Talk! 北京时间8月3日(周四)20:00,华南理工大学—林炜丰的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “视觉基础模型-尺度卷积调制遇上Transformer”,他介绍了一种新的…

Godot 4 源码分析 - 碰撞

碰撞功能应该是一个核心功能,它能自动产生相应的数据,比如目标对象进入、离开本对象的检测区域。 基于属性设置,能碰撞的都具备这样的属性:Layer、Mask. 在Godot 4中,Collision属性中的Layer和Mask属性是用于定义碰撞…

在线文档协作工具有哪些推荐?

在现代工作和学习中,团队协作的重要性日益凸显。随着云计算和互联网技术的快速发展,越来越多的在线协作工具涌现出来,为我们提供了高效、便捷的协作方式。我根据日常工作经验,向大家推荐3款主流、且备受欢迎的在线协作工具&#x…

AI绘图实战(十二):让AI设计LOGO/图标/标识 | Stable Diffusion成为设计师生产力工具

S:AI能取代设计师么? I :至少在设计行业,目前AI扮演的主要角色还是超级工具,要顶替?除非甲方对设计效果无所畏惧~~ 预先学习: 安装及其问题解决参考:《Windows安装Stable Diffusion …

用C语言构建一个数字识别卷积神经网络

卷积神经网络的原理和对应的python例子参见: https://victorzhou.com/blog/intro-to-cnns-part-1/ 和...-2/ 这里仅叙述卷积神经网络的配置, 其余部分不做赘述,具体请参见上一篇: 用C语言构建一个手写数字识别神经网路 卷积网络同样采用简单的三层结构&#xff0c…

为何优秀的项目经理都在用鱼骨图?

什么是鱼骨图 鱼骨图,又被称为因果图或是石川图,是一种强大的视觉工具,用于识别,探索和显示在复杂过程中可能或已经出现的问题的所有可能原因。这个名字来源于这个图的形状,看起来像一条鱼的骨骼。 这种图表的起源可…

了解 CVSS:通用漏洞评分系统的应用

漏洞威胁管理至关重要,因为网络犯罪是一种持续存在的全球风险。网络犯罪分子愿意利用软件中的任何漏洞来访问网络和设备。对使用该软件的软件开发人员和组织的影响可能很严重。用户必须处理攻击的结果,例如赎金或数据盗窃,并且还可能面临法律…

笔记:Android 9系统启动流程

启动流程 1.按下电源,系统启动 当电源键按下时,引导芯片代码(汇编指令)会从预定的地方(固化在ROM)开始执行,将引导程序 BootLoader 加载到 RAM中,然后执行 2.引导程序 BootLoader …

箭头函数和普通函数的区别

1. 写法不同 const arrayFn (a, b) > a b; function add(a, b) > {return a b; }2. 内部this的指向不同 window.a 1;// 箭头函数中的this在定义时就已经固定,不会因为调用对象的不同而改变 const loga () > {const a 2;return this.a; }// this在该…

【C语言学习】逃逸字符(转义字符)

逃逸字符(转义字符) 1.\" 双引号 \" printf("请分别输入身高的英尺和英寸,""如输入\"5 7\"表示5英尺7英寸:");这里的"\就是双引号的作用,因为在双引号里面直接用双引号无意义&…