- Title : Apache-Hive
- Author: Titan
1. 什么是Hive
Hive:由 Facebook 开源用于解决海量结构化日志的数据统计。 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。 也就是说,Hive提供了一种类SQL的HQL语言,方便你进行编写一些数据处理的东西,最终将 HQL 转化成 MapReduce 程序
2. Hive的安装记录
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 文件,在下面加入以下配置:
代码语言:javascript复制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。
3. 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;
4. 将数据导入Hive中
(1) 将本地文件数据导入到Hive中
- 创建一个student.txt文件,内容如下(每行数据以制表符分割)
1 Titan
2 Goodman
3 Mike
4 Workman
5 Walkman
- 显示当前的所有数据库
hive> show databases;
- 使用 default 数据库
hive> use default;
- 创建 student 表, 并声明文件分隔符 't'
hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't';
- 加载student.txt 文件到 student 数据库表中
load data local inpath 'student.txt' into table student;
- Hive 查询结果
hive> SELECT * FROM student;
OK
1 Titan
2 Goodman
3 Mike
4 Workman
5 Walkman
(2) 将HDFS中的数据导入到Hive中
将HDFS中的数据导入到Hive中和上述本地数据的导入方式并无太大差异。
- 将数据文件上传到HDFS中:
hdfs dfs put student.txt /
- 将HDFS中的数据导入到Hive中,只需要将 load语句的local删去即可:
load data inpath '/student.txt' into table student;
上面两种方式的区别:
本地文件导入到Hive采用的是copy的方式,即源文件将复制一份到HDFS中的hive相应目录,而直接导入HDFS中的数据文件,Hive将修改数据块的元数据,更改其存储路径,类似于“移动”。