大数据开发工作中的数仓设计(Hadoop,hive ,mysql )

1.HUE工具介绍使用

HUE是CDH提供一个hive和hdfs的操作工具,在hue中编写了hiveSQl也可以操作hdfs的文件

http://主机名字:端口号 hdfs的web访问端口

http://主机名字:端口号 hdfs的程序访问端口

进入后确保hdfs hive yarn 开启 在点击hue开启

在这里面也可以进行hive的sql操作,但是不太建议,依旧还是使用datagrip进行操作

2.数仓介绍

数据仓库是由一整套体系构成,包含数据采集,数据存储,数据计算,数据展示等

数据仓库主要作用对过往的历史数据进行分析处理,为公司决策停供数据支撑。

2-1 数仓特征

  • 面向主题

  • 集成性

  • 非易失性

  • 时变性

2-2 OLTP和OLAP

OLTP(On-Line Transaction Processing)即联机事务处理,也称为面向交易的处理过程,

OLAP(On-Line Analytical Processing)即联机分析处理,有时也称为决策支持系统(DSS)

2-3 ETL

ETL(Extra, Transfer, Load)包括数据抽取、数据转换、数据导入三个过程。

3.主题和主题域

主题 是对数据进行归类,每个分类是一个主题

主题域 根据分析的领域,将联系较为紧密的数据主题的集合在一起

主题域下面可以有多个主题,主题还可以划分成更多的子主题,主题和主题之间的建设可能会有交叉现象

3-2 主题域的划分

  • 按照系统划分

    • 生产系统 生产主题域

      • 商品原材料库存核销数据 商品主题

      • 订单主题

    • 财务系统

      • 商品原材料库存核销数据 商品主题

      • 销售主题

    • 人力系统

  • 按照部门划分

    • 人力部门 人力主题域

      • 员工主题 员工数据

      • 招聘主题 招聘数据

    • 生产部门

    • 销售部门

    • 后勤部门

  • 按照业务划分

    • 门店零售业务

    • 批发业务

    • 团购业务

  • 按照行业经验

    • 银行证券业

      • 当事人、产品、协议、事件、资产、财务、机构、地域、营销、渠道

4.数据仓库和数据集市

数据集市就是数据仓库的一个子集,它主要面向部门级业务,并且只面向某个特定的主题

数据集市由业务部门定义、设计和开发,业务部门进行管理和维护

5. 数仓设计

5-1 定义规范设计

  • 表命名

    • 分层_主题_实体+业务+维度_分区

分层 ods,dw,dwd

主题 sale(销售主题) user(用户主题)

实体+业务+维度

  • 示例:

    • store_goods_statistics_day

    • store_member_statistics_day

    • mysql中的表名+计算维度

ods_sale_store_goods_statistics_day_dt

规范不是前置要求,不同公司可能根据业务设计表名

  • 字段类型规范

    • 数量类型整数为bigint

    • 金额类型为decimal(27, 2),表示:27位有效数字,其中小数部分2位

    • 数量类型小数为decimal(27, 3),表示:27位有效数字,其中小数部分3位

    • 字符串(名字,描述信息等)类型为string

    • 日期类型为string

    • 时间类型为timestamp

5-2 数仓分层设计

数据仓库最基础分层 ,分层本质就是创建不同的数据库,

原始数据层 ODS

  • 将数据源的数据导入数仓ods层

  • 创建一个ods的数据库,然后按照数据源中的表创建ods库下的hive表

数据仓库层 DW 数据处理

数据服务层 ADS 计算结果

数据分层设计到的有什么作用?

  • 简化复杂问题。

    • 通过将复杂的数据处理过程分解为多个步骤或层次,可以使问题更加易于理解和处理。

    • select sum(age) from tb1 join tb2 on tb1.id =tb2.id where age > 20 group by gender

  • 结构更清晰。

    • 每个数据层都有其明确的作用域,这有助于在使用表时方便地定位和理解。

  • 数据血缘追踪。

    • 分层结构使得数据血缘关系更加明确,便于追踪和调试。

  • 用空间换时间。

    • 通过预处理大量数据,可以提高应用系统的用户体验(效率),虽然这可能导致数据仓库中存在冗余数据。

  • 数据重复使用,减少重复开发。

    • 规范的数据分层可以促进数据和指标的统一,减少重复开发,并提高数据复用率。

  • 数据隔离和屏蔽原始数据异常。

    • 分层结构可以帮助隔离原始数据的异常或敏感性,保护真实数据与统计数据解耦。

  • 数据安全。

    • 通过分层,可以更方便地对不同层的数据进行权限管理,屏蔽敏感数据。

  • 增强扩展性和便于后期维护。

    • 不分层可能会导致整个数据清洗过程受到源业务系统规则变化的影响,而分层可以简化数据清洗过程,提高扩展性,便于后期维护。

5-3 数仓建模设计

数仓建模本质就是在数仓中如何设计表存储计算数据

数仓一般采用维度建模方式来设计不同的表

维度模型是Ralph Kimall所倡导,他的《数据仓库工具箱》是数据仓库工程领域最流行的数仓建模经典。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。

在DWD层确认维度表和事实表,然后将事实表和维度表数据进行管理

在DWM层进行主题宽表关联

众多模型中最实用的是星座模型

6.DIM维度层数据处理

I-hive表的中文问题解决

首先需要把hive中要传输的表的类型进行更改 使用alter table字段变为 set utf8  因为utf8可以显示中文

II-创建DIM层表

创建原始数据表,根据mysql中的维度表字段数据创建dim层中表数据

表需要进行分区,一天为单位进行分区保存数据

III-导入dataxweb任务

需要把需要导入的字段写入dataxweb 或者自己手动进行json文件进行 mysql导入hive中的操作 (上一章节有格式以及教程)

IV-执行datax任务导入ods原始表数据

在datax 中进行执行

V-处理维度表数据

-- 开启动态分区方案
-- 开启非严格模式
set hive.exec.dynamic.partition.mode=nonstrict;
-- 开启动态分区支持(默认true)
set hive.exec.dynamic.partition=true;
-- 设置各个节点生成动态分区的最大数量: 默认为100个  (一般在生产环境中, 都需要调整更大)
set hive.exec.max.dynamic.partitions.pernode=10000;
-- 设置最大生成动态分区的数量: 默认为1000 (一般在生产环境中, 都需要调整更大)
set hive.exec.max.dynamic.partitions=100000;
-- hive一次性最大能够创建多少个文件: 默认为10w
set hive.exec.max.created.files=150000;


-- hive压缩
-- 开启中间结果压缩
set hive.exec.compress.intermediate=true;
-- 开启最终结果压缩
set hive.exec.compress.output=true;
-- 写入时压缩生效
set hive.exec.orc.compression.strategy=COMPRESSION;

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

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

相关文章

记录k8s以docker方式安装Kuboard v3 过程

原本是想通过在k8s集群中安装kuboad v3的方式安装kuboard,无奈在安装过程中遇到了太多的问题,最后选择了直接采用docker安装的方式,后续有时间会补上直接采用k8s安装kuboard v3的教程。 1.kuboard安装文档地址: 安装 Kuboard v3 …

华为 huawei 交换机 配置 MUX VLAN 示例(汇聚层设备)

组网需求 在企业网络中,企业所有员工都可以访问企业的服务器。但对于企业来说,希望企业内部部分员工之间可以互相交流,而部分员工之间是隔离的,不能够互相访问。 如 图 6-4 所示, Switch1 位于网络的汇聚层&#xff0…

【百度Apollo】探索自动驾驶:小白教学如何使用 Dreamview 播放数据包

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引入一、Dreamview 简介二、使用 Dreamview 具体步骤步骤一:进入 Apollo Docker 环境步骤二&#xff…

Qt QThreadPool线程池

1.简介 QThreadPool类管理一个QThread集合。 QThreadPool管理和重新设计单个QThread对象,以帮助降低使用线程的程序中的线程创建成本。每个Qt应用程序都有一个全局QThreadPool对象,可以通过调用globalInstance来访问该对象。 要使用其中一个QThreadPool…

VMware安装ubuntun虚拟机使用桥接模式无法上网问题解决

问题:最近准备使用VMware虚拟机搭建k8s集群服务,因为需要在同一个网段下,我使用桥接的方式,我发现主机在使用有线连接时虚拟机网络连接正常,但是使用无线网就显示连接不上网络。 解决方法 一、查看网络连接&#xff…

软考-信息系统项目管理师-论文技术架构模板(60天备考第26天)

分享一段信息系统项目管理师论文项目技术架构描述的万能模板,供大家参考。距离考试还有二十八天,如果论文写不好的可以加微进论文指导群学习论文写作。 该系统前端基于Vue开发,后端基于java开发,前后端分离部署。整体采用B/S架构&…

【论文阅读笔记】Frequency Perception Network for Camouflaged Object Detection

1.论文介绍 Frequency Perception Network for Camouflaged Object Detection 基于频率感知网络的视频目标检测 2023年 ACM MM Paper Code 2.摘要 隐蔽目标检测(COD)的目的是准确地检测隐藏在周围环境中的目标。然而,现有的COD方法主要定位…

java中的对象拷贝(包括BeanUtils和Mapstruct)

对象拷贝 借鉴: https://blog.csdn.net/weixin_43811057/article/details/122853749https://blog.csdn.net/weixin_42036952/article/details/105697234?spm1001.2101.3001.6650.8&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogComme…

目标检测应用场景—数据集【NO.33】血细胞图像分类和检测数据集

写在前面:数据集对应应用场景,不同的应用场景有不同的检测难点以及对应改进方法,本系列整理汇总领域内的数据集,方便大家下载数据集,若无法下载可关注后私信领取。关注免费领取整理好的数据集资料!今天分享…

LVS/NAT工作模式介绍及配置

1.1 LVS/NAT模式工作原理 LVS(Linux Virtual Server)的网络地址转换(NAT)模式是一种在网络层(第四层)实现负载均衡的方法。在NAT模式中,Director Server(DS)充当所有服务…

leetcode51.N皇后(困难)-回溯法

思路 都知道n皇后问题是回溯算法解决的经典问题,但是用回溯解决多了组合、切割、子集、排列问题之后,遇到这种二维矩阵还会有点不知所措。 首先来看一下皇后们的约束条件: 不能同行不能同列不能同斜线 确定完约束条件,来看看究…

UE5 体积云

写好的体积材质放这里面 效果如上 Begin Object Class/Script/UnrealEd.MaterialGraphNode Name"MaterialGraphNode_4"Begin Object Class/Script/Engine.MaterialExpressionVectorParameter Name"MaterialExpressionVectorParameter_0"End ObjectBegin O…

人工智能_大模型044_模型微调004_随机梯度下降优化_常见损失计算算法_手写简单神经网络_实现手写体识别---人工智能工作笔记0179

然后对于,梯度下降,为了让训练的速度更好,更快的下降,又做了很多算法,可以看到 这里要知道Transformer中最常用的Adam 和 AdamW这两种算法. 当然,这些算法都是用于优化神经网络中的参数,以最小化损失函数。下面我会尽量以通俗易懂的方式解释它们的原理和适用场景。 1. **L-…

关于电路设计的一些基本知识点

目录 一,BUCK降压电路1.1 布局与布线1.1.1 高频电流环路1.1.2 小信号的地1.1.3 其他要注意的地方 1.2 输入输出电容,电感的选择1.2.1 电感的选择1.2.2 输入输出电容的选择 三,电源芯片3.1 LM2596,LM2576 四,运放电路设计4.1 运放的…

亚马逊接入时遇到的相关问题和解决方法

1、签名获取 在做amazon的SDK接入时,发现需要应用签名的一些信息:MD5签名和SHA256签名。用命令java的命令 keytool -list -v -keystore xxx.keystore 如果是Java版本不是1.8的话,结果缺少MD5值 这里有3种解决方案: 1、将jav…

医生个人品牌网红IP孵化打造赋能运营方案

【干货资料持续更新,以防走丢】 医生个人品牌网红IP孵化打造赋能运营方案 部分资料预览 资料部分是网络整理,仅供学习参考。 PPT可编辑(完整资料包含以下内容) 目录 个人IP运营方案 1. 目标设定 - 个人定位:根据医生…

【论文阅读】IPT:Pre-TrainedImageProcessingTransformer

Pre-TrainedImageProcessingTransformer 论文地址摘要1. 简介2.相关作品2.1。图像处理2.2。 Transformer 3. 图像处理3.1. IPT 架构3.2 在 ImageNet 上进行预训练 4. 实验4.1. 超分辨率4.2. Denoising 5. 结论与讨论 论文地址 1、论文地址 2、源码 摘要 随着现代硬件的计算能…

ChatGPT理论分析

ChatGPT "ChatGPT"是一个基于GPT(Generative Pre-trained Transformer)架构的对话系统。GPT 是一个由OpenAI 开发的自然语言处理(NLP)模型,它使用深度学习来生成文本。以下是对ChatGPT进行理论分析的几个主…

科学高效备考AMC8和AMC10竞赛,吃透2000-2024年1850道真题和解析

多做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一,通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。 AMC8和AMC10…

【HTTP协议】了解http需要学习哪些内容

HTTP(Hypertext Transfer Protocol)是超文本传输协议,互联网上应用最广泛的一种协议,它负责在客户端和服务器之间传输数据。本文将从HTTP协议的基本原理、请求-响应模型、常见特性以及应用场景等方面进行总结。 1. HTTP基本原理 …
最新文章