大数据开发工作中的数仓设计(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.mzph.cn/diannao/5014.shtml

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

相关文章

Xinlinx FPGA如何降低Block RAM的功耗

FPGA中降低Block RAM的功耗有两种方式,分别是选择合适的写操作模式以及Block RAM的实现算法及综合设置。我们知道对于采用IP核生成对应的RAM时,会有最小面积算法、低功耗算法以及固定原语,但是采用最小功耗算法有时由于级联长度导致无法实现&…

js ajax初次跨域请求

最近有个页面,要请求第三方的一个api, postman里测试返回结果正常,状态正常 可在php js前端请求,返回错误,取不到任何有用信息,status 0. 没接触过跨域,一直以为第三方接口问题&#xff0c…

AntDesignReact提示key重复解决方案

在使用antd树形组件的时候,有时候会存在挂载相同的账号,相同账号的id是重复的,组件直接就不能用了,所以查找论坛,发现可以使用这个插件解决; 下载 npm install uuid项目中使用 // 导入 import { v4 as uu…

币圈Cryptosquare论坛

Cryptosquare综合性资讯论坛汇集了币圈新闻、空投信息、社会热点以及与Web3相关的工作信息。让我们一起解锁加密世界的种种可能性,探索Cryptosquare论坛带来的精彩! 币圈新闻板块: Cryptosquare论坛的币圈新闻板块是用户获取最新加密货币行业…

CentOS安装Docker指南

Docker安装与配置教程 Docker作为一种轻量级的虚拟化技术,在现代软件开发和运维中扮演着重要的角色。下面,我将以技术博主的身份,向大家详细介绍如何在Linux系统上安装和配置Docker,特别是如何设置Docker的监听地址和端口&#x…

Elasticsearch中【文档查询】DSL语句以及对应的Java实现

目录 全文检索查询 精准查询 布尔查询 排序、分页查询 高亮 地理查询 复合查询 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测…

全新突破:「Paraverse平行云」实现3D/XR企业级应用全面接入Apple Vision Pro

在前不久举行的GTC开发者大会上,英伟达引领行业风向,宣布其Omniverse平台能够助力企业将3D/XR应用流畅传输至Apple Vision Pro混合现实头显。在英伟达与苹果这两大科技巨头的合作下,此举标志着3D/XR技术迈向新纪元的关键一步。「Paraverse平行云」实时云…

《HCIP-openEuler实验指导手册》1.6 Apache静态资源配置

知识点 常用用途: 软件仓库镜像及提供下载服务: 配置步骤 删除网站主目录中的文件(本实验机目录为/home/source ip为192.168.12.137 端口为81) cd /home/source rm -rf *在主目录中新建6个文件夹如下图 mkdir test{1..6}新建…

将本地.mp4推流成rtsp流?(windows)

概述 如何在本地机器上进行rtsp推流整个操作? 1.软件安装 1. 推流-ffmpeg下载 从官网下载windows版本,该版本已经编译好了 放到C:下找一个目录解压,我放到C:\ffmpeg-7.0-essentials_build\进入系统环境变量设置:将…

使用nodejs和python脚本实现爬虫程序,并将抓取数据生成词云图看板

创建项目,初始化目录结构。 创建项目名称为pachong。运行 npm init -y 初始化项目。修改package.json文件中的type属性为module。安装 npm 包:npm install puppeteer #爬虫 | 自动化UI测试首先确保你的电脑上有python3环境安装两个python包 pip instal…

c#数据库: 8.在窗体上显示学生信息

以上一章学生信息表为例,首先将查询的学生信息存储到数据集中,然后将数据集与数据显示控件绑定,从而实现学生信息在窗体上的显示 (1)创建一个名为StudentGridView的窗体应用程序,为窗体添加一个DataGridVi…

微信小程序 图片上传到文件服务器

业务需求&#xff1a; 图片先上传到后台文件服务器&#xff0c;服务器返回图片的id及相关信息&#xff0c;再和其他要提交的内容一块提交到后台接口。 话不多说&#xff0c;上代码 index.wxml <van-uploader max-count"5" multiple file-list"{{ photoD…

Stable Diffusion 模型分享:Counterfeit-V3.0(动漫)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 高质量动漫风格模型。 条目内容类型大模型基础模…

Java进阶-JINQ详解与使用

本文详细介绍了JINQ&#xff08;Java Integrated Query&#xff09;&#xff0c;一种强化Java中数据查询能力的库&#xff0c;提供类SQL的查询语法和类型安全的操作。文章首先解释了JINQ的基本功能和应用&#xff0c;随后通过具体示例展示了如何使用JINQ进行数据过滤、投影、连…

Unity镂空图像做法

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

Facebook的语言学:社交媒体如何影响我们的沟通方式

1. 引言 社交媒体已经成为人们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中最具影响力的平台之一&#xff0c;不仅改变了人们之间的社交方式&#xff0c;也对我们的语言学产生了深远的影响。本文将深入探讨Facebook的语言学特点&#xff0c;以及它如何塑造和改变…

Spring6 当中 获取 Bean 的四种方式

1. Spring6 当中 获取 Bean 的四种方式 文章目录 1. Spring6 当中 获取 Bean 的四种方式每博一文案1.1 第一种方式&#xff1a;通过构造方法获取 Bean1.2 第二种方式&#xff1a;通过简单工厂模式获取 Bean1.3 第三种方式&#xff1a;通过 factory-bean 属性获取 Bean1.4 第四种…

【保姆级教程】用IDEA2023版本给RuoYi-Vue添加子模块

文章目录 前言添加子模块新建子模块新建子模块界面&#xff1f;新建子模块界面&#xff01; 修改pom依赖配置RuoYiApplication添加测试接口配置接口权限测试 前言 若依前后端分离框架能够极大方便当前开发任务&#xff0c;并且使用的技术栈也相当丰富&#xff0c;但是目前只提…

Docker 中安装单体架构 Redis 的 Shell 脚本

该脚本用于实现 root 用户在 Linux 操作系统下的 Docker 中安装单体架构 Redis Shell 脚本 Git 仓库地址 Gitee&#xff1a;https://gitee.com/tongchaowei/common-shell/tree/main/root 执行脚本 bash ./docker-redis-install-single.sh需要注意的 该脚本会先检查是否安…

数学建模--图论最短路径基础

1.图的定义 学过数据结构或者离散数学的小伙伴们应该知道图的概念&#xff0c;我在这里简单的介绍一下&#xff1a; 图的概念和我们理解的是很不一样的&#xff0c;这里的图并不是我们的生活里面的图片&#xff0c;而是一种表示不同的数据之间的关系&#xff0c;例如这里的5个…