Hive的架构、工作原理、数据类型

支持多表插入

1. Hive架构

Hive架构

  • 当用户使用JDBC/ODBC操作Hive时,先使用hiveserver2的thrift跨语言服务将用户使用的语言转换成Hive的语言,再发送给Hive Driver生成执行计划,先将执行计划保存到HDFS,再发送给执行引擎进行执行
  • 用户接口:Hive shell command line interface值Hive自带的命令行接口;Hive Client指指客户端工具,如Beeline远程调用客户端和Java语言编写的应用程序等;WebGUI指通过浏览器访问Hive
  • hiveserver2:一种遵循thrift协议的跨语言服务框架,使用该框架,可以让不同的编程语言调用Hive接口
  • Hive Driver: 主要指Parser解析器、Compiler编译器、Optimizer优化器、Executor执行器,完成HiveQL查询语句的词法解析、语法解析、编译、优化、物理执行计划的生成
  • MetaData Store: Hive的元数据通常包括表名、列、分区、数据所在的目录位置等信息。Derby不支持多用户操作,数据储存目录不固定,所以通常采用Mysql作为元数据库

2. Hive工作原理

Hive工作原理

工作原理如下所示:

  1. 用户通过用户接口向Hive Driver发送executeQuery
  2. HIve Driver向Compiler发送getPlan请求
  3. Compiler去Metadata Store获取需要的元数据信息
  4. Metadata Store向Compiler发送元数据信息
  5. Compiler将executeQuery转换成抽象语法树,再转换成查询块,再转换成逻辑查询计划,最终转换成物理查询计划,向Hive Driver发送物理查询计划
  6. Hive Driver向execution engine提交executePlan,execution engine从metastore请求并获取元数据信息,然后向真正的执行引擎提交任务,真正的执行引擎会对HDFS执行文件读写操作
  7. 用户接口向Hive Driver发起获取结果集的请求
  8. Hive Driver向execution engine发起获取结果集的请求,同时execution engine从HDFS获取结果集
  9. execution engine向Hive Driver发送结果集,Hive Driver获取到结果集后返回给用户接口

3. Hive数据类型

基本数据类型

数据类型描述
tinyint1字节有符号整数
smallint2字节有符号整数
int4字节有符号整数
bigint1字节有符号整数
float4字节单精度浮点数
double8字节双精度浮点数
decimal高精度浮点数, 通过decimal(precision, scale)指定精度和小数位,小数位默认为0没有小数位,精度默认为10
timestamp精度到纳秒的UNIX时间戳
date格式为yyyy-MM-dd描述的日期
string字符串,没有长度限制
varchar变长字符串,长度限制区间为1 ~ 65355,如varchar(64),当有30个字符时,只占用30个字符的位置
char定长字符串, 如char(64),当有30个字符时,会占用30个字符的位置,剩余34个位置由空格填充
boolean布尔值,true或false
binary字节数组

集合数据类型

数据类型描述
array具有相同数据类型的集合,元素是有序的,索引从0开始,可以通过索引获取执行位置的元素,如array
map键值对集合, 如map<string, int>
struct对象,如struct<name: string, age: int>,可以通过field.name访问元素内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值