首页 > 技术文章 > hive知识(1)

ng1991 2017-06-21 21:15 原文

一、hive的定义

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。

 

二、hive的历史及版本

由facebook开源给社区,目前版本是2.x。

 

三、hive的适用场景

1、不支持记录级别的更新,插入或者删除。

2、不支持OLTP(联机事务处理),更接近OLAP(联机分析处理)。

3、Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询,Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。

 

四、hive组件

1、用户界面:CLI    JDBC/ODBC(thrift server)   WEBUI

2、Driver(anltr、compiles、optimizes、executes)开源语法分析器、 编译器、优化器、执行器

3、元数据metastore(mysql)

4、hdfs

 

 五、hive文件存储格式

textfile:默认格式,数据不做压缩,磁盘开销大,数据解析开销大。

sequencefile:Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。

rcfile:一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。

自定义格式:当用户的数据文件格式不能被当前 Hive 所识别的时候,可以自定义文件格式。用户可以通过实现inputformat和outputformat来自定义输入输出格式。

STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'

 

六、基础数据格式

数据类型 所占字节 开始支持版本
TINYINT 1byte,-128 ~ 127  
SMALLINT 2byte,-32,768 ~ 32,767  
INT 4byte,-2,147,483,648 ~ 2,147,483,647  
BIGINT 8byte,-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807  
BOOLEAN    
FLOAT 4byte单精度  
DOUBLE 8byte双精度  
STRING    
BINARY   从Hive0.8.0开始支持
TIMESTAMP   从Hive0.8.0开始支持
DECIMAL   从Hive0.11.0开始支持
CHAR   从Hive0.13.0开始支持
VARCHAR   从Hive0.12.0开始支持
DATE   从Hive0.12.0开始支持

推荐阅读