一、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开始支持 |