Hive:由 Facebook 开源用于解决海量结构化日志的数据统计。 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。 也就是说,Hive提供了一种类SQL的HQL语言,方便你进行编写一些数据处理的东西,最终将 HQL 转化成 MapReduce 程序
Hive的安装相对Hadoop来说比较容易,这里使用的是hive-1.2.2版本
首先:将 apache-hive-1.2.2-bin.tar.gz 上传到机器中并解压
修改/opt/module/hive/conf 目录下的 hive-env.sh.template 名称为 hive-env.sh
配置 hive-env.sh 文件,在下面加入以下配置:
export HADOOP_HOME=/opt/hadoop-2.10.0
export HIVE_CONF_DIR=/opt/apache-hive-1.2.2-bin/conf
启动Hadoop集群,然后在 hive安装目录下的bin目录中,运行hive二进制文件,即可启动hive。
(1)启动 hive bin/hive
(2)查看数据库 hive> show databases;
(3)打开默认数据库 hive> use default;
(4)显示 default 数据库中的表 hive> show tables;
(5)创建一张表 hive> create table student(id int, name string);
(6)显示数据库中有几张表 hive> show tables;
(7)查看表的结构 hive> desc student;
(8)向表中插入数据 hive> insert into student values(1000,"ss");
(9)查询表中数据 hive> select * from student;
(10)退出 hive hive> quit;
1 Titan
2 Goodman
3 Mike
4 Workman
5 Walkman
hive> show databases;
hive> use default;
hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
load data local inpath 'student.txt' into table student;
hive> SELECT * FROM student;
OK
1 Titan
2 Goodman
3 Mike
4 Workman
5 Walkman
将HDFS中的数据导入到Hive中和上述本地数据的导入方式并无太大差异。
hdfs dfs put student.txt /
load data inpath '/student.txt' into table student;
上面两种方式的区别:
本地文件导入到Hive采用的是copy的方式,即源文件将复制一份到HDFS中的hive相应目录,而直接导入HDFS中的数据文件,Hive将修改数据块的元数据,更改其存储路径,类似于“移动”。