温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hadoop中的Hive的介绍和应用

发布时间:2020-06-08 09:46:53 来源:亿速云 阅读:651 作者:Leah 栏目:大数据

本文以Hadoop中的Hive工具为例,为大家分析Hive的核心概念和架构原理以及Hive的应用。阅读完整文相信大家对Hadoop中的Hive有了一定的认识。

1、    Hive核心概念和架构原理

1.1、 Hive概念

Hive由FaceBook开发,用于解决海量结构化日志的数据统计。

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

本质:将Hive SQL转化成MapReduce程序。

1.2、Hive与数据库的区别

对变项Hive数据库软件
查询语言HQLSQL
数据存储HDFSRaw Devce or  Loal FS
执行器MapReduceExecutor
数据插入支持批量导入/单条插入支持单条或者批量导入
数据操作覆盖追加行级更新删除
处理数据规模
执行延迟
分区支持支持
索引0.8版本之后加入了索引支持复杂的索引
扩展性有限
数据加载模式读时模式(快)写时模式(慢)
应用场景海量数据查询实时查询

读时模式:Hive在加载数据到表中的时候不会校验.

写时模式:Mysql数据库插入数据到表的时候会进行校验.

总结:Hive只适合用来做海量离线的数据统计分析,也就是数据仓库。

1.3、Hive的优缺点

优点:操作接口采用了类SQL语法,提供快速开发的能力,避免了去写MapReduce;Hive还支持用户自定义函数,用户可以根据自己的需求实现自己的函数。

缺点:Hive不支持纪录级别的增删改操作;Hive查询延迟很严重;Hive不支持事务。

1.4、Hive架构原理

Hadoop中的Hive的介绍和应用

(1)用户接口:CLI(hive shell);JDBC(java访问Hive);WEBUI(浏览器访问Hive)

(2)元数据:MetaStore

元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段,标的类型(表是否为外部表)、表的数据所在目录。这是数据默认存储在Hive自带的derby数据库中,推荐使用MySQL数据库存储MetaStore。

(3)Hadoop集群:

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

(4)Driver:驱动器

解析器(SQL Parser):将SQL字符串换成抽象语法树AST,对AST进行语法分析,像是表是否存在、字段是否存在、SQL语义是否有误。

编译器(Physical Plan):将AST编译成逻辑执行计划。

优化器(Query Optimizer):将逻辑计划进行优化。

执行器(Execution):把执行计划转换成可以运行的物理计划。对于Hive来说默认就是Mapreduce任务。

通过Hive**对数据进行数据分析过程**:

Hadoop中的Hive的介绍和应用

2、    Hive交互方式

需要先启动hadoop集群和MySQL服务

2.1、Hive交互shell

cd  /opt/bigdata2.7/hive (hive的安装路径,根据自己实际情况改变)
bin/hive

Hadoop中的Hive的介绍和应用

可以在命令端口写上HQL语句:show databases;验证是否可用。

2.2、JDBC交互

输入hiveserver2相当于开启了一个服务端,查看hivesever2的转态

Hadoop中的Hive的介绍和应用

输入netstat  –nlp命令查看:

Hadoop中的Hive的介绍和应用

运行hiveserver2相当于开启了一个服务端,端口号10000,需要开启一个客户端进行通信,所以打开另一个窗口,输入命令beeline.

Hadoop中的Hive的介绍和应用

Beeline连接方式:!connect jdbc:hive2://node1:10000

主意不要省略!

当然了hiveserver2服务端可以运行在后台:

nohup hiveserver2 &

3、    Hive数据类型

3.1基本数据类型

类型名称描述举例
booleanTrue/falseTrue
tinyint1字节的有符号整数1
Smallint2字节的有符号整数1
int4字节的有符号整数1
Bigint8字节的有符号整数1
Float4字节精度浮点数1.0
Double8字节精度浮点数1.0
String字符串(不设长度)“adcadfaf”
Varchar字符串(1-65355)“adfafdafaf”
Timestamp时间戳123454566
date日期20160202

3.2复合数据类型

类型名称描述举例
Array一组有序的字段,字段类型必须相同的array(元素1,元素2)Array(1,2,4)
Map一组无序的键值对map(k1,v1,k2,v2)Map(‘a’,1,’b’,2)
Struct一组命名的字段,字段类型可以不同struct(元素1,元素2)Struct(‘a’,1,2,0)

(1)Array字段的元素访问方式:下标获取元素,下标从0开始

比如:获取第一元素:array[0]

(2)Map字段的访问方式:通过键获取值

比如:获取a这个key对应的value:map[‘a’]

(3)struct字段的元素获取方式:

定义一个字段c的类型为struct(a int;b string)

获取a和b的值:

create table complex(
     col1 array<int>,
     col2 map<string,int>,
     col3 struct<a:string,b:int,c:double>
     )

4、    Hive数据类型转换

4.1、隐式类型转换

系统自动实现类型转换,不需要客户干预

如:tinyint可以转换成int,int可以转成bigint

所有整数类型、float、string类型都可以隐式转转换成double

tinyint、samllint、int都可以转成float

boolean不可以转成其他任何类型

4.2、手动类型转换

可以使用cast函数显示的进行数据类型转换

例如:cast(‘1’ as int)把字符串’1’转成整数1

如果强制转换类型失败,如执行cast(‘x’ as int)表达式返回NULL。

看完上述内容,你们对Hadoop中的Hive工具大概了解了吗?如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI