大数据|Hive和数据仓库

news2025/1/16 5:51:40

前文回顾:HBase基本工作原理

目录

📚数据仓库和OLAP

🐇数据仓库

🥕面向主题

🥕集成的

🥕时变的

🥕非易失的

🐇OLTP(联机事务处理)vs OLAP(联机分析处理)

📚Hive基本工作原理

🐇Hive和HBase的区别

🐇Hive的作用与结构组成

🐇Hive的数据模型

🥕表(Table)

🥕外部表(External Table)

🥕分区(Partition)

🥕桶(Bucket)

📚Hive查询语言——HiveQL

🐇创建数据表的命令

🐇装入数据

🐇插入数据

🐇SELECTS and FILTERS

📚Hive总结


📚数据仓库和OLAP

🐇数据仓库

  • 数据仓库:用于决策支持的数据库,与组织的操作型数据库独立的运行维护。
  • 数据仓库是一个面向主题的、集成的、时变的、非易失性的数据集合,用于支持管理决策过程。

🥕面向主题

  • 数据表围绕着主题组织,如客户、产品、销售等主题。
  • 面向决策者,聚焦于数据建模与分析, 而不是日常的业务操作或事务处理。
  • 围绕特定的主题,提供一个简洁的数据视图,不包括对决策支持无用的数据。

🥕集成的

  • 集成多个异质数据源来构建,关系数据库,文件,在线交易记录。
  • 应用数据清洗和数据集成技术,对不同的数据源,确保集成后在命名规范、编码结构、属性量纲等方面的一致性,如酒店价格、货币、税、 是否含早餐等等。
  • 数据需在转换后,移入到数据仓库。

🥕时变的

  • 数据仓库的时间跨度比操作型数据库长得多。操作型数据库:关注当前数据;数据仓库数据:从历史的角度提供信息(例如,过去5-10年)
  • 数据仓库中的每一个关键结构,显式或隐式的包含时间元素,但是操作数据的键可能包含或不包含“时间元素”。

🥕非易失的

  • 操作环境转换来的物理独立的数据存储
  • 数据的操作更新不会出现在数据仓库环境中,不需要事务处理、恢复和并发控制机制,在数据访问中只需要两个操作——数据的初始加载和数据的存取。

🐇OLTP(联机事务处理)vs OLAP(联机分析处理)

  • OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
  • OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
  • OLTP实时性要求高OLAP具有共享多维信息的快速分析的特征。

📚Hive基本工作原理

🐇Hive和HBase的区别

HBaseHive
一种NoSQL数据库,最常见的应用场景是采集网页数据的存储。一个构建与Hadoop顶层的数据仓库工具,对存储在Hadoop文件中的数据集进行数据整理、查询和分析处理。
由于是key-value型数据库,可以再扩展到各种key-value应用场景,如日志信息的存储。

Hive提供一个统一的查询分析层,支撑连接、分组、聚集等类SQL语句,可以看作是用户编程接口。

主要针对OLTP应用。

主要针对OLAP应用。

🐇Hive的作用与结构组成

  • Hive构建于分布式文件系统HDFS之上,提供了一种类似于SQL的数据查询分析查询接口
  • 它能够将类似于SQL的查询语句(HiveQL)转换为一个或多个MapReduce程序,从而大大简化数据查询分析过程中的应用程序开发难度。

Hive的系统结构

  • 用户接口层(Client):负责接收用户输入的指令,并将这些指令发送到Hive引擎进行数据处理。用户接口层包括命令行接口CLI、数据库访问编程接口JDBC/ODBC以及Web界面(Web UI)。
  • 元数据存储层(Metastore):用于存储Hive中的Schema表结构信息,存储操作的数据对象的格式信息、在HDFS中的存储位置的信息以及其他的用于数据转换的信息SerDe等。
  • Hive驱动(Driver):用于将各个组成部分形成一个有机的执行系统,包括会话的处理、查询获取以及执行驱动。
  • 编译器(Compiler):Hive需要一个编译器,将HiveQL语言编译成中间语言表示。编译器包括对于HiveQL语言的分析、执行计划的生成以及优化等工作。
  • 执行引擎(Execution Engine)在Driver的驱动下,具体完成执行操作,包括MapReduce的执行、HDFS操作或者元数据操作。
  • Hadoop数据存储及处理平台:从Hive引擎接收指令,并最终通过HDFS、HBase,配合MapReduce实现数据处理

关于元数据存储:Metastore

  • 在Hive中由一系列的数据表格组成一个命名空间,关于这个命名空间的描述信息会保存在Metastore的空间中。
  • 元数据使用SQL的形式存储在传统的关系数据库中,因此可以使用任意一种关系数据库,例如Derby(apache的关系数据库实现),MySQL以及其他的多种关系数据库存储方法。
  • 在数据库中,保存最重要的信息是有关数据库中的数据表格描述,包括每一个表的格式定义,列的类型,物理的分布情况,数据划分情况等。

 

🐇Hive的数据模型

每一个类似于数据库的系统都首先需要定义一个数据模型,然后才是在这个数据模型之上的各种操作。

🥕表(Table)

  • 在Hive中对于数据的管理与维护是利于表(Table)的形式实现的。Hive表在逻辑上有两部分组成,第一部分为真实数据,第二部分为描述表格中数据形式的元数据。
  • Hive数据表中的列是有类型的(int, float, string, data, boolean),也可以是复合的类型,如list: map (类似于JSON形式的数据)。
  • Hive表在HDFS中有固定的位置。
  • Hive表创建完成以后便可以通过类SQL语句对表以及表内的数据进行相关操作。当加载数据到表内时,本质上,Hive会将数据移动到仓库目录下。因为这里是移动操作,所以当删除这张表时,该表的元数据以及数据将被删除。

🥕外部表(External Table)

  • 在Hive中创建表时,默认情况下表内的数据管理由Hive负责。这样意味着Hive会将数据移动到它的“数据仓库目录”。
  • 除此之外,Hive在创建表时还可以指定创建外部表。外部表是一个已经存储在HDFS文件中,并具有一定格式的数据。
  • 使用外部表意味着Hive表内的数据不在Hive的数据仓库内,需要到目录以外位置访问数据

🥕分区(Partition)

  • 数据表可以按照一定的规则进行划分Partition,来对表进行合理的管理以及提高查询效率
  • Hive中的每个分区对应数据库中相应分区列的一个索引,每个分区对应着表下的一个目录。

🥕桶(Bucket)

  • 在一定范围内的数据按照Hash的方式进行划分(这对于数据的抽样以及对于join的优化很有意义),即取样更高效且能获取更高的查询处理效率。

数据的物理分布情况:

  • Hive在HDFS中有固定的位置,通常被放置在HDFS的如下目录中:/home/hive/warehouse
  • 每个数据表被存放在warehouse的子目录中。进一步来说,数据划分Partition、数据桶Buckets形成了数据表的子目录。
  • 数据可能以任意一种形式存储,例如:
    • 使用分隔符的文本文件,或者是SequenceFile
    • 使用用户自定义的SerDe,则可以定义任意格式的文件
      • SerDe说明Hive如何去处理一条记录,包括Serialize/Deserilize
      • Serialize把Hive使用的Java object转换成能写入HDFS的字节序列;Deserilize把字符串或者二进制流转换成Hive能识别的Java object

📚Hive查询语言——HiveQL

DDL:CREATE, ALTER, SHOW, DESCRIBE, DROP
DML:LOAD DATA, INSERT
QUERY:SELECT

🐇创建数据表的命令

  • 显示所有的数据表:hive> show tables;
  • 创建一个表,这个表包括两列,分别是整数类型以及字符串类型,使用文本文件表达,数据域之间的分隔符为\t:
    • hive> create table shakespeare (freq int, word string) row format delimited fields terminated by ‘\t’ stored as textfile;
    • hive> create external table shakespeare (freq int, word string) location ‘user/input/hive/partitions/file1’;

创建两个表,分别为"shakespeare"和"shakespeare"(这是一个外部表)。这两个表都包含两列,分别为freq(频率)和word(单词)。这里使用了不同的数据存储格式和存储位置。

  • 第一个表"shakespeare"使用了标准的文本存储格式,并使用制表符分隔不同的字段。这个表可以存储在Hive的默认文件系统中,也可以存储在其他支持Hive的文件系统中。
  • 第二个表"shakespeare"是一个外部表,使用了外部数据源中指定的存储位置"‘user/input/hive/partitions/file1’"。这个表的数据并不存储在Hive的默认文件系统中,而是使用外部数据源中定义的数据存储方式。
  • 显示所创建的数据表的描述,即创建时候对于数据表的定义:hive> describe shakespeare;

🐇装入数据

  • 数据装入到Hive表中:hive> load data inpath “shakespeare_freq” into table shakespeare;

🐇插入数据

  • Hive表插入数据:hive> INSERT OVERWRITE TABLE pokes_b SELECT a.* FROM pokes a;
  • INSERT语句用于插入(添加)数据到表中,而INSERT OVERWRITE语句是一种覆盖写入方式,表示将表pokes_b中所有的数据都清空,然后将表pokes中的数据直接写入到表pokes_b中。
  • 在本例中,SELECT语句用于选择表pokes中的所有数据,并使用通配符*表示选择所有的列。最后,使用FROM子句指定要选择的表的名称a。
  • 因此,这条SQL语句的含义是将表pokes中的所有数据添加或覆盖到表pokes_b中。
  • 查询结果写入文件目录:
    • hive> INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds='2008-08-15';
    • hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/local_out' SELECT a.* FROM pokes a;
  • 第一条语句将invites表中ds字段为2008-08-15的记录插入到HDFS中的临时文件夹/tmp/hdfs_out中。其中,INSERT OVERWRITE DIRECTORY表示覆盖写入、写入目标为文件夹;SELECT a.* FROM invites a WHERE a.ds='2008-08-15'表示选取满足条件的所有字段数据。
  • 第二条语句将pokes表中所有记录插入到本地文件系统中的临时文件夹/tmp/local_out中。其中,INSERT OVERWRITE LOCAL DIRECTORY表示覆盖写入、写入目标为本地文件夹;SELECT a.* FROM pokes a表示选取所有字段数据。

🐇SELECTS and FILTERS

  • 简单查询(不会调用到MapReduce):hive> select * from shakespeare
  • 条件查询(自动调用MapReduce):
    • hive> select * from shakespeare where freq > 100 sort by freq asc limit 10;
    • hive> SELECT a.foo FROM invites a WHERE a.ds='2008-08-15';

其他的先不列了,感觉就是SQL ——> HiveQL语法手册

📚Hive总结

  • Hive提供了一种类似于SQL的查询语言,使得其能够用于用户的交互查询。
  • 与传统的数据库类似,Hive提供了多个数据表之间的联合查询,能够完成高效的多个数据表之间的查询。
  • 通过底层执行引擎的工作,Hive将SQL语言扩展到很大的查询规模。

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

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

相关文章

织梦城市分站怎么安装织梦二级域名站群织梦制作企业分站教程

1、安装说明 一、下载织梦多城市二级域名源码; 二、上传源码到服务器;(必须支持泛解析) 三、在浏览器输入http://你的域名/install进入安装页面; 可以参考http://www.hlzcb.com/zhimengxueyuan/zhimenganzhuangshiyong/25830.html 四、输入数据库用户名密码和数据库…

公司股权转让,变更股东要了解哪些?

什么是公司股权? 股权即股票持有者所具有的与其拥有的股票比例相应的权益及承担一定责任的权力。股权转让是一种物权变动行为,股权转让后,股东基于股东地位而对公司所发生的权利义务关系全部同时移转于受让人,受让人因此成为公司…

SpringBoot的yml多环境配置3种方法

目录 方式一:多个yml文件 步骤一、创建多个配置文件 步骤二、applicaiton.yml中指定配置 方式二: 单个yml文件 方式三:在pom.xml中指定环境配置 步骤一、创建多个配置文件 步骤二、在application.yml中添加多环境配置属性 步骤三、在po…

创客匠人直播怎么样?

快速发展的互联网时代,直播成为各个行业的引流利器。如今,众多教培机构转型线上,直播无疑是最好的线上教学方式,不仅可以让老师和学员异地教学还能最好的还原线下教学场景,利用科技提高学习质量。 做好一场直播不仅仅…

JColorChooser和JFileChooser

Swing提供了JColorChooser和JFileChooser这两种对话框,可以很方便的完成演示的选择和本地文件的选择。 1.JColorChooser JColorChooser用于创建颜色选择器对话框,该类的用法非常简单,只需要调用它的静态方法就可以快速生成一个颜色选择对话框…

蓝牙耳机什么牌子好?500内好用的蓝牙耳机推荐

随着蓝牙耳机的受欢迎程度越来越高,近几年来,无蓝牙耳机市场呈爆发式增长,蓝牙耳机品牌也越来越多。那么蓝牙耳机什么牌子好?接下来,我来给大家推荐几款500内好用的蓝牙耳机,一起来看看吧。 一、南卡小音舱…

GDD471A001 PLC / DCS维护日志

​ GDD471A001 PLC / DCS维护日志 PLC维护日志 PLC/DCS 维护日志将帮助您跟踪过去的故障、解决方案、零件更换。如果以后再次出现同样的问题,跟踪日志将帮助您立即解决。 您的控制系统的可靠性可以通过参考维护日志来确定。 使用 PLC/DCS 维护日志可以识别频繁出…

React的生命周期及Redux状态管理器等

生命周期 一个应用或页面从创建到消亡过程中某一时刻自动调用的回调函数称为生命周期钩子函数 挂载 constructor :来初始化函数内部 state,为 事件处理函数 绑定实例render:渲染 DOMcomponentDidMount:组件挂载、DOM 渲染完后&…

V8 JavaScript引擎

简介 V8 (v8.dev)是 Google 的开源高性能 JavaScript 和 WebAssembly 引擎,用 C 编写。它用于 Chrome 和 Node.js 等。它实现了 ECMAScript 和 WebAssembly,并运行在 Windows 7 或更高版本、macOS 10.12 以及使用 x64、IA-32、ARM 或 MIPS 处理器的 Lin…

FFmpeg HEVC 解码 YUV

1. 概要与流程图 1.1 FFmpeg 支持 h264,hevc 等解码,由于分离视频文件为 hevc 格式,为了方便起见,当前解码的格式为 hevc,代码支持各种视频格式解码,需要修改参数和适配 1.2 HEVC 解码 YUV 流程图如下: 2. 封装读写文件操作 2.1 读写头文件,FileTool.h #import <Fou…

MAC常用操作

1. 添加环境变量 vi ~/.bash_profile export PATHselfdefine_path:$PATH source ~/.bash_profile适用于安装Application之后将该Application的Contents/bin下的可执行程序添加到环境变量&#xff0c;使得在终端能够启用。 例如使用cmake-3.25.0-macos-universal.dmg安装好cmak…

基于微信小程序网上书城系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat8.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springspringmvcmybatis(ssm框架) 本系统分微信小程序和管理后…

双向链表(数据结构)(C语言)

目录 概念 带头双向循环链表的实现 前情提示 双向链表的结构体定义 双向链表的初始化 关于无头单向非循环链表无需初始化函数&#xff0c;顺序表、带头双向循环链表需要的思考 双向链表在pos位置之前插入x 双向链表的打印 双链表删除pos位置的结点 双向链表的尾插 关…

Windows命令提示行使用指南一

命令提示行使用指南 前言一、起源和发展二、和DOS的关系三、常用命令 前言 cmd 是 Windows 操作系统中的命令行界面&#xff08;CLI&#xff09;&#xff0c;也称为命令提示符&#xff08;CMD&#xff09;或批处理文件。它是 Windows 命令行界面的主要组成部分&#xff0c;用于…

《Linux 内核设计与实现》07. 中断和中断处理

文章目录 注册中断处理程序释放中断处理程序编写中断处理程序共享的中断处理程序中断例程实例 中断上下文/proc/interrupts中断控制禁止和激活中断禁用指定中断线中断系统的状态 注册中断处理程序 // 分配一条给定的 irq 中断线 request_irq(unsigned int irq, irq_handler_t …

『python爬虫』13. 视频地址防盗链实战案例(保姆级图文)

目录 1. 寻找视频真实url地址&#xff08;视频地址被加密了&#xff09;2. 防盗链中的来源判断完整代码总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 1. 寻找视频真实url地址&#xff08;视频地址被加密了&am…

【刷题笔记】不要二+把字符串转换为整数

一、不要二 题目&#xff1a; 牛客网链接&#xff1a;不要二_牛客题霸_牛客网 描述 二货小易有一个W*H的网格盒子&#xff0c;网格的行编号为0~W-1&#xff0c;网格的列编号为0~H-1。每个格子至多可以放一块蛋糕&#xff0c;任意两块蛋糕的欧几里得距离不能等于2。 对…

camunda表达式如何使用

在Camunda中&#xff0c;表达式是一种灵活的方式&#xff0c;可以用于在流程定义和表单中计算和处理数据。表达式可以在Camunda的各个环节中使用&#xff0c;例如服务任务、网关、表单、条件等。 以下是Camunda表达式的一些常见用途&#xff1a; 1、计算值&#xff1a;表达式可…

腾讯云轻量16核32G28M带宽服务器CPU流量性能测评

腾讯云轻量16核32G28M服务器3468元15个月&#xff0c;折合每月231元&#xff0c;28M公网带宽下载速度峰值可达3584KB/s&#xff0c;折合3.5M/秒&#xff0c;系统盘为380GB SSD盘&#xff0c;6000GB月流量&#xff0c;折合每天200GB流量。腾讯云百科来详细说下腾讯云轻量应用服务…

SeaweedFS学习笔记:架构和快速入门

目录 1. 介绍1.1 Components1.2 Master 服务1.3 Volume 服务1.4 Filer服务1.5 S3服务1.6 Volume的概念1.7 Collection的概念 2. 快速入门2.1 安装 SeaweedFS2.2 启动 Master 服务2.3 启动 Volume 服务2.4 快速启动一个Master服务和一个Volume服务2.5 测试 3. 参考 1. 介绍 1.1 …