目录
- 1. Hive架构
- 2. Hive工作原理
- 3. Hive数据类型
支持多表插入
1. 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作为元数据库
工作原理如下所示:
- 用户通过用户接口向Hive Driver发送executeQuery
- HIve Driver向Compiler发送getPlan请求
- Compiler去Metadata Store获取需要的元数据信息
- Metadata Store向Compiler发送元数据信息
- Compiler将executeQuery转换成抽象语法树,再转换成查询块,再转换成逻辑查询计划,最终转换成物理查询计划,向Hive Driver发送物理查询计划
- Hive Driver向execution engine提交executePlan,execution engine从metastore请求并获取元数据信息,然后向真正的执行引擎提交任务,真正的执行引擎会对HDFS执行文件读写操作
- 用户接口向Hive Driver发起获取结果集的请求
- Hive Driver向execution engine发起获取结果集的请求,同时execution engine从HDFS获取结果集
- execution engine向Hive Driver发送结果集,Hive Driver获取到结果集后返回给用户接口
基本数据类型
数据类型描述tinyint1字节有符号整数smallint2字节有符号整数int4字节有符号整数bigint1字节有符号整数float4字节单精度浮点数double8字节双精度浮点数decimal高精度浮点数, 通过decimal(precision, scale)指定精度和小数位,小数位默认为0没有小数位,精度默认为10timestamp精度到纳秒的UNIX时间戳date格式为yyyy-MM-dd描述的日期string字符串,没有长度限制varchar变长字符串,长度限制区间为1 ~ 65355,如varchar(64),当有30个字符时,只占用30个字符的位置char定长字符串, 如char(64),当有30个字符时,会占用30个字符的位置,剩余34个位置由空格填充boolean布尔值,true或falsebinary字节数组集合数据类型
数据类型描述array具有相同数据类型的集合,元素是有序的,索引从0开始,可以通过索引获取执行位置的元素,如arraymap键值对集合, 如mapstruct对象,如struct,可以通过field.name访问元素内容