Hive离线数仓结构分析

 Hive离线数仓结构

首先,在数据源部分,包括源业务库、用户日志、爬虫数据和系统日志,这些都是数据的源头。这些数据通过Sqoop、DataX或 Flume 工具进行提取和导入操作。这些工具负责将不同来源的数据传输到基于 Hive 的离线数据仓库中。
在离线数据仓库中,数据会依次经过多个处理层。最开始是 ODS(操作数据存储)层,这里存储的是从数据源导入的原始数据。接着数据流向 DWD(数据仓库明细)层,在此层对原始数据进行清洗和预处理,确保数据质量。之后是 DWM(数据仓库中间)层,在这一层进行数据的聚合和整合,生成中间结果。然后是 DWS(数据仓库服务)层,该层主要是为数据分析和应用提供数据服务。最后是DM(数据集市)层,针对特定业务需求进行数据定制和汇总。
在数据仓库处理过程中,分布式离线计算起到了关键作用。图中展示了几种常用的分布式计算框架,包括MapReduce、Hive SQL、Impala和 Spark SQL。这些框架用于处理和分析数据仓库中的数据,确保数据处理的高效性和准确性。

数仓分层

为什么分层?

作为一名数据的规划者,我们肯定希望自己的数据能够有秩序地流转,数据的整个生命周期能够清晰明确被设计者和使用者感知到。直观来讲就是如图这般层次清晰、依赖关系直观。但是,大多数情况下,我们完成的数据体系却是依赖复杂、层级混乱的。在不知不觉的情况下,我们可能会做出一套表依赖结构混乱,甚至出现循环依赖的数据体系。

因此,我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序,这就是谈到的数据分层。数据分层并不能解决所有的数据问题,但是,数据分层却可以给我们带来如下的好处:

  1. 清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解。

  2. 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题。

  3. 便于维护:当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

  4. 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少重复开发的工作量。

  5. 高性能:数据仓库的构建将大大缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库直接获取,尤其对于海量数据的关联查询和复杂查询,所以数据仓库分层有利于实现复杂的统计需求,提高数据统计的效率。

ODS层(操作数据层,Operational Data Store) 

数据来源与特点

数据来源广泛:直接从各个业务系统的数据库中抽取而来,如企业的ERP系统、CRM系统、电商平台的交易数据库等。这些数据基本保持了业务系统中原始数据的原貌,包括数据的格式、精度、编码等。

数据实时性强:能够快速获取业务系统中的最新数据,通常是按照一定的时间周期(如每小时、每天)进行增量抽取,以保证数据仓库中的数据与业务系统数据的同步性在可接受范围内。

功能作用

数据集成:将不同业务系统、不同类型的数据整合到一起,解决了数据分散在多个系统中的问题,为后续的数据处理提供了统一的数据基础。

数据缓冲:作为业务数据进入数据仓库的第一层,起到了缓冲的作用,避免了直接对业务系统数据库的频繁查询和读取,减轻了业务系统的压力。 

支持快速查询:可以满足一些对实时性要求较高、查询相对简单的业务需求,如实时监控业务数据的变化、快速获取当天的业务订单数量等。

DIM层(维度层,Dimension) 

数据构成与特性 

维度数据丰富:主要包含了描述业务事实的各种维度信息,如时间维度(年、月、日、时等)、地理维度(国家、地区、城市等)、产品维度(产品类别、品牌、型号等)、客户维度(客户类型、年龄、性别等)。

数据相对稳定:维度数据一旦确定,通常不会频繁更改,具有较高的稳定性。例如,产品的类别和品牌一般不会经常变动。

功能作用

提供分析维度:为数据分析和决策支持提供了丰富的维度视角,通过与其他层的数据进行关联,可以从不同的维度对业务事实进行分析和挖掘。

数据标准化:对维度数据进行统一的编码、分类和标准化处理,确保在整个数据仓库中维度信息的一致性和准确性,便于进行跨部门、跨业务的数据分析和比较。

支持数据钻取:方便用户在数据分析过程中进行维度的上卷和下钻操作,例如从年维度钻取到月维度,或者从产品类别维度下钻到具体的产品型号维度,以满足不同层次的分析需求。 

DWD层(明细数据层,Data Warehouse Detail) 

数据处理与特征

数据清洗与转换:对从ODS层抽取上来的数据进行清洗,去除噪声数据、重复数据,处理缺失值等,并根据业务规则进行数据转换,如数据类型的统一、字段的拆分和合并等。

明细数据存储:以业务过程为单位,存储经过清洗和转换后的详细业务数据,这些数据能够完整地反映每个业务过程的细节信息,如每一笔订单的详细信息、每一次客户访问的记录等。

功能作用

数据质量提升:通过清洗和转换操作,提高了数据的质量,为后续的数据分析和应用提供了准确、可靠的数据基础。

支持明细查询:能够满足对业务数据进行详细查询和分析的需求,例如查询某一订单的具体交易信息、某一客户在特定时间段内的所有访问记录等。

为数据聚合做准备:作为数据聚合的基础层,为DWS层和ADS层提供了详细的数据支持,便于进行各种维度的汇总和统计分析。

DWM 层(数据仓库中间层,Data Warehouse Middle)

数据处理方式与特点

轻度汇总处理:对 DWD 层的明细数据进行轻度汇总操作。这种汇总操作介于明细数据和高度汇总数据之间,例如按小时对用户登录次数进行汇总,或按天对商品点击量进行汇总。

数据整合与转换:将来自多个不同数据源的 DWD 层数据进行整合,并进行必要的数据转换。比如将不同格式的日期数据统一转换为标准格式,或者将不同编码的产品类别进行统一编码。

关联分析处理:对存在关联关系的数据进行处理,挖掘数据间的潜在联系。例如将用户的浏览行为数据和购买行为数据进行关联,分析用户的购买决策过程。

功能作用

数据优化与预处理:通过轻度汇总、转换和关联处理,优化数据结构,为后续更复杂的数据分析和处理提供更便捷的数据基础,减少数据处理复杂性。

支持实时分析需求:能够快速地为一些实时性较强的数据分析需求提供数据支持,如实时监控某产品在当天的销售趋势,通过 DWM 层已处理的数据可以快速获取相关信息。

辅助数据挖掘工作:为数据挖掘任务提供经过初步处理的数据,提高数据挖掘的效率和准确性。例如在进行用户细分的数据挖掘项目时,DWM 层处理的数据可以帮助更准确地识别不同用户群体的特征。

DWS层(汇总数据层,Data Warehouse Summary) 

数据汇总方式与特点

基于维度汇总:根据预先定义的业务规则和分析需求,按照一定的维度对DWD层的明细数据进行汇总,如按天、周、月等时间维度对订单金额进行汇总,或者按地区、产品类别等维度对销售量进行汇总。

轻度汇总数据:汇总的程度相对较轻,一般保留了关键的维度信息和汇总指标,既能满足一定的分析需求,又不至于丢失过多的细节信息,具有较好的灵活性和扩展性。

功能作用

提高查询效率:通过预先的汇总计算,大大减少了查询时需要处理的数据量,提高了数据分析的效率,能够快速响应用户的分析请求,如快速获取某个月的销售总额、某个地区的客户活跃度等。

 支持综合分析:为企业的综合数据分析和决策支持提供了有力的数据支持,能够从多个维度对业务数据进行综合分析,发现业务的趋势、规律和问题。

数据共享与复用:作为企业内部分享和复用的数据层,不同的业务部门和分析团队可以基于DWS层的数据进行各自的分析和应用开发,减少了重复的数据处理工作。

ADS层(应用数据层,Application Data Store)

数据应用导向与特性

面向应用场景:根据具体的业务应用需求和决策场景而构建,数据具有很强的针对性和实用性,如为营销活动提供目标客户名单、为财务报表提供数据支持、为运营监控提供关键指标数据等。

数据形式多样:可以是报表、仪表盘、数据接口等多种形式,以满足不同用户和业务场景的需求。

功能作用

支持业务决策:直接为企业的业务决策提供数据支持,通过对数据的分析和展示,帮助决策者快速了解业务现状、发现问题、制定决策方案。

数据交付与输出:作为数据仓库与业务应用的接口层,将经过处理和分析的数据以合适的形式交付给业务用户,实现了数据仓库与业务应用的有效衔接,促进了数据的价值转化和应用落地。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之 模板方法模式

模板方法模式是行为型设计模式的一种。它定义了一个算法的骨架,并将某些步骤的实现延迟到子类中。模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。 模板方法模式的核心在于: 封装算法的骨架:通过父类中的模板方…

【分治】--- 快速选择算法

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 🏠 颜色划分 📌 题目解析 颜色分类 本题要求我们原地对元数组划分0,1,2三个区域,也就是不能使用辅助数组&#xf…

万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统

万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统 哈喽小伙伴们还,我是Stark-C~ 最近苹果Mac mini 2024款在政府补贴的加持下,仅需3500块钱左右就能到手确实挺香的。我看很多评论区的小伙伴跃跃欲试,但是也有不少之前从未体…

C++设计模式行为模式———状态模式

文章目录 一、引言二、状态模式三、总结三、总结 一、引言 状态模式是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。其实现可完成类似有限状态机的功能。换句话说,一个对象可以处…

vscode自动打印日志插件

自动日志工具(Auto Logger Log) 概述 自动日志工具(Auto Logger Log) 是一款 VS Code 扩展,用于简化生成调试日志的过程。它可以为选中的变量自动生成打印语句,帮助开发者快速记录和调试代码。该扩展支持多…

优雅的不等式——Hard

上一文《Easy》末尾出现了又要我们证明的例子,Hard难度就是继续答题答下去 其实一样可以用那篇文章https://zhuanlan.zhihu.com/p/669285539中的式子继续算下去,但是有三个系数,实在是太费时间和人力了 翻到下面的第十九种类型,可…

虚拟局域网PPTP配置与验证(二)

虚拟局域网PPTP配置与验证(二) windows VPN客户端linux 客户端openwrt客户端性能验证虚拟局域网PPTP配置与验证(一)虚拟局域网PPTP配置与验证(二) : 本文介绍几种客户端连接PPTP服务端的方法,同时对linux/windows/openwrt 操作系统及x86、arm硬件平台下PPTP包转发性能进…

Move 合约部署踩坑笔记:如何解决 Sui 客户端发布错误Committing lock file

Move 共学活动:快速上手 Move 开发 为了帮助更多开发者快速了解和掌握 Move 编程语言,Move 共学活动由 HOH 社区、HackQuest、OpenBuild、KeyMap 联合发起。该活动旨在为新手小白提供一个良好的学习平台,带领大家一步步熟悉 Move 语言&#…

介绍一下strupr(arr);(c基础)

hi , I am 36 适合对象c语言初学者 strupr(arr)&#xff1b;函数是把arr数组变为大写字母 格式 #include<string.h> strupr(arr); 返回值为arr 链接分享一下arr的意义(c基础)(必看)(牢记)-CSDN博客 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #incl…

进程间通信5:信号

引入 我们之前学习了信号量&#xff0c;信号量和信号可不是一个东西&#xff0c;不能混淆。 信号是什么以及一些基础概念 信号是一种让进程给其他进程发送异步消息的方式 信号是随时产生的&#xff0c;无法预测信号可以临时保存下来&#xff0c;之后再处理信号是异步发送的…

浅谈网络 | 传输层之套接字Socket

目录 基于 TCP 协议的 Socket 程序调用过程基于 UDP 协议的 Socket 程序函数调用过程服务器如何接入更多的项目构建高并发服务端&#xff1a;从多进程到 IO 多路复用 在前面&#xff0c;我们已经介绍了 TCP 和 UDP 协议&#xff0c;但还没有实践过。接下来这一节&#xff0c;我…

Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图

用户打开 PDF 文档时&#xff0c;他们会看到 PDF 的初始视图。默认情况下&#xff0c;打开 PDF 时不会显示书签面板或缩略图面板。在本文中&#xff0c;我们将演示如何设置文档属性&#xff0c;以便每次启动文件时都会打开书签面板或缩略图面板。 Spire.PDF for .NET 是一款独…

FileLink内外网文件共享系统与FTP对比:高效、安全的文件传输新选择

随着信息技术的不断进步&#xff0c;文件传输和共享已经成为企业日常工作中不可或缺的一部分。传统的FTP&#xff08;File Transfer Protocol&#xff09;协议在一定程度上为文件共享提供了便利&#xff0c;但随着企业对文件传输的需求越来越复杂&#xff0c;FileLink内外网文件…

神经网络归一化方法总结

在深度学习中&#xff0c;归一化 是提高训练效率和稳定性的关键技术。以下是几种常见的神经网络归一化方法的总结&#xff0c;包括其核心思想、适用场景及优缺点。 四种归一化 特性Batch NormalizationGroup NormalizationLayer NormalizationInstance Normalization计算维度…

ORB-SLAM2源码学习:Initializer.cc:Initializer::ComputeF21地图初始化——计算基础矩阵

前言 在平面场景我们通过求解单应矩阵H来求解位姿&#xff0c;但是我们在实际中常见的都是非平面场景&#xff0c; 此时需要用基础矩阵F求解位姿。 1.函数声明 cv::Mat Initializer::ComputeF21(const vector<cv::Point2f> &vP1, const vector<cv::Point2f>…

离散化 C++

题目 解题思路 将所有对坐标的访问用map映射到一个新的坐标轴上再在新的坐标轴上进行加法用前缀和快速求出区间的和 代码实现 #include<iostream> #include<algorithm> #include<unordered_map>using namespace std;typedef pair<int, int> PII;con…

uniop触摸屏维修eTOP40系列ETOP40-0050

在现代化的工业与商业环境中&#xff0c;触摸屏设备已成为不可或缺的人机交互界面。UNIOP&#xff0c;作为一个知名的触摸屏品牌&#xff0c;以其高性能、稳定性和用户友好性&#xff0c;广泛应用于各种自动化控制系统、自助服务终端以及高端展示系统中。然而&#xff0c;即便如…

机器学习与图像处理中上采样与下采样

一、机器学习中的上采样 目的&#xff1a;在机器学习中&#xff0c;上采样用于处理不平衡数据集&#xff0c;即某些类别的样本数量远多于其他类别。上采样的目标是通过增加少数类样本的数量来平衡类别分布&#xff0c;从而提高模型对少数类的识别能力。 1.随机过采样&#xff0…

Unity中动态生成贴图并保存成png图片实现

实现原理&#xff1a; 要生成长x宽y的贴图&#xff0c;就是生成x*y个像素填充到贴图中&#xff0c;如下图&#xff1a; 如果要改变局部颜色&#xff0c;就是从x1到x2(x1<x2),y1到y2(y1<y2)这个范围做处理&#xff0c; 或者要想做圆形就是计算距某个点&#xff08;x1,y1&…

DHCP服务(包含配置过程)

目录 一、 DHCP的定义 二、 使用DHCP的好处 三、 DHCP的分配方式 四、 DHCP的租约过程 1. 客户机请求IP 2. 服务器响应 3. 客户机选择IP 4. 服务器确定租约 5. 重新登录 6. 更新租约 五、 DHCP服务配置过程 一、 DHCP的定义 DHCP&#xff08;Dynamic Host Configur…