文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-10-23 12:01

关注

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

文章目录

一、Hive介绍

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

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

Hive的优缺点

优点:

缺点:

Hive架构

Hive用户接口

Hive元数据的三种存储模式

Hive数据存储

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

Hive是基于Hadoop分布式文件存储的,它的数据存储在HDFS中。现在我们介绍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的优势:

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

Hive本质

将HQL转换成MapReduce程序。

Hive工作原理

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

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

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

在这里插入图片描述

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯