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

news2024/11/24 13:07:30

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.coloradmin.cn/o/1634122.html

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

相关文章

android studio拍照功能问题解决

1.点击拍照功能直接闪退 2.拍照后不能选择确认键,无法保存 上述是在android studio做项目中经常会使用到模拟器或真机的拍照功能时主要遇到的两个问题。 解决方法: 1.直接闪退问题: if(Build.VERSION.SDK_INT>Build.VERSION_CODES.N)…

【HTML植物大战僵尸源码】

HTML植物大战僵尸源码 效果图部分源码领取源码下期更新预报 效果图 部分源码 index.html <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <meta name"KeyWords" content"lonelys…

Vue3 + TS 项目实战 - 后台管理系统 - 按钮权限

前期回顾 网站的打赏 —— 新一代的思路-CSDN博客https://blog.csdn.net/m0_57904695/article/details/136704914?spm1001.2014.3001.5501 目录 &#x1f6a9; XX银行_系统管理_按钮权限控制_前端_提测单 项目信息 提测版本信息 功能列表 测试范围 测试环境 ✅ 步…

05-MessageConverter和ControllerAdvice

准备对象 Data static class User {private String name;private int age;JsonCreator // 默认jackson会使用无参构造器反序列化 这里强制使用当前带参构造器public User(JsonProperty("name") String name, JsonProperty("age") int age) {this.name …

《21天学通C++》(第十一章)多态

为什么需要多态&#xff1f; 为了最大限度地减少代码&#xff0c;提高可读性 1.虚函数 虚函数是C中的一种特殊成员函数&#xff0c;它允许在派生类&#xff08;也称为子类&#xff09;中重写&#xff08;覆盖&#xff09;基类的实现&#xff0c;使用virtual进行声明 在C中&am…

包装类的基础知识

JAVA 是面向对象编程的 但是基本数据类型没有对象的 基本数据类型 byte------>>Byte short------>>Short int------>>Integer long------>>long char------>>Character double------>>Double boolean------>>Boolean 包装类…

ton-http-api安装部署

1、拉取github代码 mkdir /data git clone https://github.com/toncenter/ton-http-api.git cd ton-http-api2、创建环境变量 ./configure.py cat .env TON_API_CACHE_ENABLED0 TON_API_CACHE_REDIS_ENDPOINTcache_redis TON_API_CACHE_REDIS_PORT6379 TON_API_CACHE_REDIS_T…

【酱浦菌-爬虫项目】爬取百度文库文档

1. 首先&#xff0c;定义了一个变量url&#xff0c;指向百度文库的搜索接口 ‘https://wenku.baidu.com/gsearch/rec/pcviewdocrec’。 2. 然后&#xff0c;设置了请求参数data&#xff0c;包括文档ID&#xff08;docId&#xff09;和查询关键词&#xff08;query&#xff09;。…

Unity镂空图像做法

问题和解决方案 现在要完成一个需求&#xff0c;即镂空中间部分的image&#xff0c;外围image可以定义颜色并可选屏蔽点击&#xff0c;而中间的image需要透明且可以穿透&#xff0c;必须不能屏蔽点击。 由此拆分成了两个问题&#xff1a; 1.定义外围image颜色&#xff0c;内…

政安晨:【Keras机器学习示例演绎】(二十五)—— 使用具有三重损失的连体网络进行图像相似性估计

目录 简介 设置 加载数据集 准备数据 设置嵌入生成器模型 建立连体网络模型 将一切整合在一起 训练 检查网络的学习成果 摘要 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够…

Django框架之ORM操作

一、选择数据库 1、默认数据库 Django默认的数据库是sqlite3数据库 DATABASES {default: {ENGINE: django.db.backends.sqlite3,NAME: BASE_DIR / db.sqlite3,} }2、指定数据库 修改连接到MySQL数据库 DATABASES {default: {ENGINE: django.db.backends.mysql,# 数据库名…

鸿蒙OpenHarmony【标准系统 烧录】(基于RK3568开发板)

烧录 烧录是指将编译后的程序文件下载到芯片开发板上的动作&#xff0c;为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能&#xff0c;操作简单&#xff0c;能快捷、高效的完成程序烧录&#xff0c;提升烧录的效率。 RK3568的镜像烧录通过Windows环境进行烧录&…

Oracle-OCR掉盘无法启动集群问题

问题背景&#xff1a; 用户在对一套Oracle11.2.0.4的RAC集群进行OCR掉盘测试&#xff0c;验证NORMAL冗余的OCR磁盘组的可用性。测试通过将udev配置里面的一块OCR盘注释&#xff0c;然后重启服务器集群模拟OCR磁盘组出现掉盘的情况。用户在测试中&#xff0c;注释掉udev配置里面…

嵌入式开发_DMA详解

在嵌入式开发的广阔天地中&#xff0c;MCU是众多开发者手中的利器。而DMA&#xff08;Direct Memory Access&#xff0c;直接内存访问&#xff09;技术&#xff0c;则如同一位高效的快递小哥&#xff0c;穿梭于处理器与外设之间&#xff0c;无需CPU亲自出马&#xff0c;高效地搬…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-8.1

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

【工具】--- Adobe Illustrator 下载-入门绘图

文章目录 软件下载入门项目可看课程 尝试使用Adobe Illustrator&#xff08;设计师常用软件&#xff09;进行科研绘图。 软件下载 阿里云盘下载 入门项目 绘制一个箭头并保持为SVG&#xff0c; 直线->画线->窗口->描边->选择想要的箭头样式->颜色->改为蓝…

众筹商城源码 众筹商品平台 商城加共识元富之路 网上商城众筹

众筹商城源码 众筹商品平台 商城加共识元富之路 网上商城众筹 前端是编译后的&#xff0c;后端PHP&#xff0c;带商城 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89161734 更多资源下载&#xff1a;关注我。

mybatis工程需要的pom.xml,以及@Data 、@BeforeEach、@AfterEach 的使用,简化mybatis

对 “mybatis - XxxMapper.java接口中方法的参数 和 返回值类型&#xff0c;怎样在 XxxMapper.xml 中配置的问题” 这篇文章做一下优化 这个pom.xml文件&#xff0c;就是上面说的这篇文章的父工程的pom.xml&#xff0c;即&#xff1a;下面这个pom.xml 是可以拿来就用的 <?…

Node.js 版本升级方法

在构建vue项目时&#xff0c;依赖npm&#xff08;Node Package Manager&#xff09;工具&#xff0c;类似于Java项目需要maven管理。而npm是node.js的管理工具&#xff0c;npm依赖node.js环境才能执行。 有时候使用voscode或者其他工具安装vue项目依赖&#xff0c;显示一直处于…

【自然语言处理】Word2VecTranE的实现

作业一 Word2Vec&TranE的实现 1 任务目标 1.1 案例简介 Word2Vec是词嵌入的经典模型&#xff0c;它通过词之间的上下文信息来建模词的相似度。TransE是知识表示学习领域的经典模型&#xff0c;它借鉴了Word2Vec的思路&#xff0c;用“头实体关系尾实体”这一简单的训练目…