通过hadoop之旅7-centerOS7 : Hive环境搭建相信搭建已经在自己的虚拟机上搭建好了hive的环境,今天带大家熟悉一下hive的基本使用
hive脚本的三种执行方式
- hive -e 'sql'
- hive -f 'sql.file'
- hive jdbc 代码执行脚本
通过这三种方式可以不用进入hive的命令行,接下来介绍命令行里处理hive操作
首先
启动hive服务,进入hive的bin目录下,执行开服务的命令
[root@master bin]# ./hive --service metastore &
复制代码
接着执行hive命令,进入hive本地命令行模式
[root@master bin]# ./hive
复制代码
建库
接下来创建数据库mmcc
,并使用该数据库
hive>create database mmcc;
hive>use mmcc;
复制代码
建表
然后我们就可以进行建表操作,现在建一张普通的人员表
create table if not exists person(
name String,
age String
)
comment '这是注释'
row format delimited //进行格式化限制
fields terminated by ',' //表示导入时,行字段按‘,’隔开
lines terminated by '\n' //表示行终止符按\n来算,即遇到回车就算下一行
stored as textfile; //表示最终导入的数据以文件形式存储
复制代码
查看表结构
然后可以通过desc person
查看表结构
导入数据
在本地或者hdfs准备好一个文件,本文演示本地导入数据到hive,里面的内容就是person
的信息
vi /home/mmcc/input.txt
hello,java
hello,world
hello,c++
hello,java
hello,c#
复制代码
接下来我们演示如何导入数据,导入数据的语法是:
load data [local] inpath 'path' [overwrite] into table xxxx;
[root@master mmcc]# ./hive-2.3.3/bin/hive -e 'load data local inpath "/home/mmcc/input.txt" into table person'
复制代码
如果是hdfs上的文件只需要去掉local
,把path换成远程hdfs路径即可
接下来就可以通过sql语句进行查询操作了
[root@master mmcc]# ./hive-2.3.3/bin/hive -e 'select * from person'
复制代码
到这里数据我们已经导入进去了。那这个时候可能就会有人问,hive不是把sql转换成mapreduce吗?为什么我运行
selec * from person
很快就出来了。这是因为这个语句只是把存在文件里的内容输出而已,不过会生成mapreduce作业。接下来我们可以做一下条件查询,比如统计一共有多少个人,语法和sql一样。
[root@master mmcc]# ./hive-2.3.3/bin/hive -e 'select count(1) from person'
复制代码
接下来大家就会发现,这条sql被转换成了一个mapreduce作业
登录web页面查看mapreduce作业,打开http://master:8088
可以看到
在此处显示其实一个mapreduce作业已经运行了起来。
通过hive,我们就不用再写MapReduce作业了,可以直接将数据导入到hive中,通过sql来做离线数据分析。当然hive还有很多强大的地方大家可以详细去学习了解