iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >[Hive]一篇带你读懂Hive是什么
  • 668
分享到

[Hive]一篇带你读懂Hive是什么

hivehadoopbigdata 2023-10-23 12:10:43 668人浏览 薄情痞子
摘要

✅作者简介:大家好,我是Philosophy7?让我们一起共同进步吧!🏆 📃个人主页:Philosophy7的csdn博客 🔥系列专栏: 

✅作者简介:大家好,我是Philosophy7?让我们一起共同进步吧!🏆 📃个人主页:Philosophy7的csdn博客
🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博>主哦🤞

文章目录

一、Hive介绍

hive: 由 Facebook 开源用于解决海量结构化日志的数据统计工具

Hive 是基于 hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 sql 查询功能。

Hive的优缺点

优点:

  • 类似于SQL语句,简单学习易上手
  • 避免了去写 mapReduce,减少开发人员的学习成本
  • Hive 的执行延迟比较高,因此 Hive 常用于数据分析,对实时性要求不高的场合
  • Hive 优势在于处理大数据,对于处理小数据没有优势,因为 Hive 的执行延迟比较
  • Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数

缺点:

  • Hive 的 HQL 表达能力有限
  • Hive 的效率比较低
    • Hive本质是一个MR

Hive架构

Hive用户接口

  • Hive CLI(Hive Command Line) Hive的命令行
  • HWI(Hive WEB Interface) HiveWeb接口
  • Hive提供了Thrift服务,也就是Hiveserver。

Hive元数据的三种存储模式

  • 单用户模式 : Hive安装时,默认使用的是Derby数据库存储元数据,这样不能并发调用Hive。
  • 多用户模式 : Mysql服务器存储元数据
  • 远程服务器模式 : 启动MetaStoreServer

Hive数据存储

Hive数据可区分为表数据元数据,表数据我们都知道是表中的数据,而元数据是用来存储表的名字表分区以及属性

Hive是基于Hadoop分布式文件存储的,它的数据存储在hdfs中。现在我们介绍Hive中常见的数据导入方式

  • 本地文件系统中导入数据到Hive
  • 从HDFS上导入数据到Hive表
  • 从其他表中查询出相应的数据并导入Hive表中
  • 在创建表的时候通过从其他表中查询出相应的记录并插入到所创建的表中
#1.演示从本地装载数据到hive#1.1创建表create table student(id string, name string) row fORMat delimited fields terminated by '\t';#1.2加载本地的文件到hive load data local inpath '/root/student.txt' into table default.student; #default.test 数据库.表名 也可直接表名#2.演示加载HDFS文件到hive中#2.1 将文件上传到HDFS根目录dfs -put /root/student.txt /;#2.2加载HDFS上的数据load data inpath '/student.txt' into table test.student;#3.加载数据覆盖表中原有的数据#3.1上传文件到HDFS中dfs -put /root/student.txt /;  #将文件装载到表下 文件就相当于windows中的剪切操作#3.2加载数据覆盖表中原有数据load data inpath '/student.txt' overwrite into table test.student;#4.查询表select * from student;
#通过查询语句向表中插入数据(insert)#1.1创建表create table student_par(id int,name String)row format delimited fields terminated by '\t';#1.2通过insert插入数据insert into table student_par values(1,'zhangsan'),(2,'lisi');

架构原理

用户接口

CLI(command-line interface)、JDBC/ODBC(jdbc 访问 hive)、WEBUI(浏览器访问 hive)

元数据

元数据包括:表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字段、
表的类型(是否是外部表)、表的数据所在目录等

Hadoop

使用 HDFS 进行存储,使用 MapReduce 进行计算。

驱动器:Driver

1)解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第
三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在、SQL
语义是否有误。
(2)编译器(Physical Plan):将 AST 编译生成逻辑执行计划。
(3)优化器(Query Optimizer):对逻辑执行计划进行优化。
(4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来
说,就是 MR/Spark。

在这里插入图片描述

Hive文件格式

  1. TextFile
    • 这是默认的文件格式。数据不会压缩处理,磁盘开销大,数据解析开销也大。
  2. SequenceFile
    • 这是Hadooapi提供的一种二进制文件支持,以二进制的形式序列化到文件中。
  3. RCFile
    • 这种格式是行列存储结构的存储方式。
  4. ORC
    • Optimized Row Columnar ORC文件格式是一种Hadoop生态圈中的列式存储格式。

ORC的优势:

  • 列示存储,有多种文件压缩方式
  • 文件是可分割的。
  • 提供了多种索引
  • 可以支持复杂的数据结构 比如Map

ORC文件格式是以二进制方式存储的,所以是不可直接读取的。

Hive本质

将HQL转换成MapReduce程序。

  • Hive处理的数据存储在HDFS
  • Hive分析数据底层的实现是MapReduce
  • 执行程序运行在Yarn

Hive工作原理

简单来说Hive就是一个查询引擎。当Hive接受到一条SQL语句会执行如下操作:

  1. 词法分析和语法分析。使用antlr将SQL语句解析成抽象语法树
  2. 语义分析。从MetaStore中获取元数据信息,解释SQL语句中的表名、列名、数据类型
  3. 逻辑计划生成。生成逻辑计划得到算子树
  4. 逻辑计划优化。对算子树进行优化
  5. 物理计划生成。将逻辑计划生成出的MapReduce任务组成的DAG的物理计划
  6. 物理计划执行。将DAG发送到Hadoop集群进行执行
  7. 将查询结果返回。

Hive展现的MapReduce任务设计到组件有:

  • 元存储 : 该组件存储了Hive中表的信息,其中包括了表、表的分区、模式、列及其类型、表映射关系等
  • 驱动 : 控制HiveQL生命周期的组件
  • 查询编辑器
  • 执行引擎
  • Hive服务器
  • 客户端组件 提供命令行接口Hive CLI、Web UI、JDBC驱动等

在这里插入图片描述

Hive数据类型

Hive支持两种数据类型,一种原子数据类型、还有一种叫复杂数据类型。

原子数据类型

基本数据类型
类型描述示例
TINYINT1字节有符合整数1
SMALLINT2字节有符号整数1
INT4字节有符号整数1
BIGINT8字节有符号整数1
FLOAT4字节单精度浮点数1.0
DOUBLE8字节双精度浮点数1.0
BOOLEANtrue/falsetrue
STRING字符串“hive”,‘hive’

Hive类型中的String数据类型类似于mysql中的VARCHAR。该类型是一个可变的字符串。

Hive支持数据类型转换,Hive是用Java编写的,所以数据类型转换规则遵循Java :

隐式转换 --> 小转大

强制转换 --> 大传小

Hive复杂数据类型

类型描述示例
ARRAY有序的字段。字符类型必须相同ARRAY(1,2)
MAP无序的键值对。建的类型必须是原子的,值可以是任何类型。Map(‘a’,1,‘b’,2)
STRUCT一组命名的字段。字段类型可以不同STRUCT(‘a’,1,1,0)

来源地址:https://blog.csdn.net/ChengXuTeng/article/details/124842026

--结束END--

本文标题: [Hive]一篇带你读懂Hive是什么

本文链接: https://www.lsjlt.com/news/440343.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • [Hive]一篇带你读懂Hive是什么
    ✅作者简介:大家好,我是Philosophy7?让我们一起共同进步吧!🏆 📃个人主页:Philosophy7的csdn博客 🔥系列专栏: ...
    99+
    2023-10-23
    hive hadoop big data
  • 【Servlet篇】一文带你读懂Request对象
    文章目录 1. 前言 2. Request 对象 2.1 Request 继承体系 2.2 Request 获取请求参数 1. 获取请求...
    99+
    2023-10-22
    servlet java tomcat
  • 一文了解Hive是什么
    目录一、Hive介绍Hive的优缺点Hive架构Hive用户接口Hive元数据的三种存储模式Hive数据存储架构原理Hive文件格式Hive本质Hive工作原理Hive数据类型一、H...
    99+
    2024-04-02
  • 什么是CDN一文带您读懂CDN
    CDN(Content Delivery Network)是一种基于网络的技术,用于提高网站的访问速度和性能。CDN通过将网站的静态...
    99+
    2023-09-23
    CDN
  • Hive中的ACID是什么
    在Hive中,ACID是指原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Du...
    99+
    2024-04-02
  • 一文带你读懂Java IO复用
    本篇文章为大家展示了一文带你读懂Java IO复用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接...
    99+
    2023-05-31
    java io复用 ava
  • Hive中的SerDe是什么
    Hive中的SerDe是Serializer/Deserializer的缩写,它是用于在Hive中读取和写入数据的接口。SerDe负...
    99+
    2024-03-12
    Hive
  • Hive中的UDF是什么
    Hive中的UDF是用户自定义函数(User Defined Function),允许用户自定义函数来操作或处理数据。UDF可以用于...
    99+
    2024-04-02
  • Hive中的ACID是指什么
    在Hive中,ACID是指一组数据库事务的特性,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isol...
    99+
    2024-04-02
  • Hive中的分区是什么
    Hive中的分区是一种将表数据按照某一列或多列进行划分的方法。通过对数据进行分区,可以提高查询效率,因为只需要对特定分区的数据进行处...
    99+
    2024-04-02
  • 一文带你读懂MyBatis中的参数
    一文带你读懂MyBatis中的参数?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言相信很多人可能都遇到过下面这些异常:"Parameter 'xxx'...
    99+
    2023-05-31
    mybatis
  • 一文带你读懂Java中的Character类
    这期内容当中小编将会给大家带来有关一文带你读懂Java中的Character类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用字符时,我们通常使用的是内置数据类型char。实例char ch = ...
    99+
    2023-05-31
    java character类 ava
  • 一文带你读懂Java中的IO流
    一文带你读懂Java中的IO流?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、IO解决问题解决设备与设备之间的数据传输问题,比如 硬盘—->内存 内存—–>硬...
    99+
    2023-05-31
    java io流 ava
  • 一文带你读懂Golang sync包之sync.Mutex
    目录sync.Mutex的数据结构state为什么sync.Mutex不需要初始化正常模式和饥饿模式sync.Mutex三大方法Lock()Unlock()TryLock()sync...
    99+
    2023-05-16
    Golang sync.Mutex方法 Golang sync.Mutex Go sync.Mutex
  • 一文带你读懂Java中的枚举
    这期内容当中小编将会给大家带来有关一文带你读懂Java中的枚举,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。enum 的全称为 enumeration, 是 JDK 5  中引入的新特性,存放在...
    99+
    2023-05-31
    java 枚举 ava
  • 一文带你搞懂什么是Nginx服务器
    目录一、Nginx是什么?二、Nginx的反向代理(扩展:正向代理)三、Nginx的负载均衡什么是负载均衡?四、Nginx的动静分离!五、Nginx的安装windows版本下的安装下...
    99+
    2023-05-15
    Nginx Nginx服务器
  • Hive中Hql语法是什么
    小编给大家分享一下Hive中Hql语法是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的...
    99+
    2023-06-03
  • 一篇文章读懂什么是MySQL索引下推(ICP)
    目录一、简介 二、原理 三、实践 3.1 不使用索引下推 3.2 使用索引下推 四、使用条件 五、相关系统参数 总结一、简介 ICP(Index Condition Pushdow...
    99+
    2024-04-02
  • 一篇文章带你彻底搞懂Redis 事务
    目录Redis 事务简介Redis 事务基本指令实例分析Redis 事务与 ACID总结Redis 事务简介 Redis 只是提供了简单的事务功能。其本质是一组命令的集合,事务支持一...
    99+
    2022-11-13
    redis有几种部署方式 redis事务三大特性 redis怎么做到事务回滚
  • 一篇文章带你彻底搞懂Redis 事务
    目录Redis 事务简介Redis 事务基本指令实例分析Redis 事务与 ACID总结Redis 事务简介 Redis 只是提供了简单的事务功能。其本质是一组命令的集合,事务支持一次执行多个命令,在事务执行过程中,会顺...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作