Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能,它的本质就是将SQL转换成MapReduce程序。
Hive本身建立在Hadoop的体系结构上,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行。并按照该计划生成MapReduce任务后交给Hadoop集群处理。
Hive是一个数据仓库,它提供了数据仓库的部分功能:数据ETL(抽取、转换、加载)工具,数据存储管理,大数据集的查询和分析能力。
由于Hive是基于hadoop平台的,所以它有很好的扩展性(可以自适应机器和数据量的动态变化),高延展性(自定义函数),良好的容错性,低约束的数据输入格式。
Hive的存储是建立在Hadoop文件系统之上的。Hive本身没有专门的数据存储格式,也不能为数据建立索引,用户可以自由地组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符行分割符就可以解析数据了。
Hive中主要包含四种数据模型:表(Table)、外部表( External Table)、分区表(Partition)、桶(Bucket)。Hive中的表和数据库中的表的概念是类似的,每个表在Hive中都有一个对应的存储目录。
Hive操作
显示所有hive中的所有数据库:show databases;
创建数据库,数据名为test:create database test;
创建student表:hive> create table student (
> sno bigint,
> sname string,
> sex string,
> tel bigint)
> row format delimited fields terminated by '\t';
为了测试我把我们班的人名单上传到了student表中
load data local inpath '/home/file/people.txt' into table student;
查询表的数据:select * from student;
在查询时也遇到了一些问题,一开始查询出来乱码,后来在网上查了查资料,我上传的文本的编码和linux中的终端编码不一样,于是我将我文本的编码改成了utf-8,于是查询出来就不乱码了。
初学hive,以后博客持续更新。