hadoop生态系统学习之路(六)hive的简单使用

释放双眼,带上耳机,听听看~!

一、hive的基本概念与原理

Hive是基于Hadoop之上的数据仓库,可以存储、查询和分析存储在 Hadoop 中的大规模数据。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据,允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。Hive 没有专门的数据格式。
hive的访问方式:
hadoop生态系统学习之路(六)hive的简单使用
hive的执行原理:
hadoop生态系统学习之路(六)hive的简单使用

二、hive的常用命令

连接进入hive:hive
删除数据库:drop database if exists qyk_test cascade;如下图:
hadoop生态系统学习之路(六)hive的简单使用
然后,我们使用create database qyk_test;创建一个qyk_test的数据库,如下:
hadoop生态系统学习之路(六)hive的简单使用
接下来,我们执行create table user_info(id bigint, account string, name string, age int) row format delimited fields terminated by ‘\t’;创建一张表,如下:
hadoop生态系统学习之路(六)hive的简单使用
我们可以执行describe user_info;查看表结构,如下:
hadoop生态系统学习之路(六)hive的简单使用
然后,我们使用create table user_info_tmp like user_info;创建一个和user_info一样结构的临时表,如下:
hadoop生态系统学习之路(六)hive的简单使用
然后我们准备一个文件user_info.txt,以制表符分隔,如下

接下来执行load data local inpath ‘/tmp/user_info.txt’ into table user_info;可看到如下:
hadoop生态系统学习之路(六)hive的简单使用
然后执行select * from user_info;可看到:
hadoop生态系统学习之路(六)hive的简单使用
然后,我们执行insert into table user_info_tmp select id, account, name, age from user_info;可以看到:
hadoop生态系统学习之路(六)hive的简单使用
这里,hive将此语句的执行转为MR,最后将数据入到user_info_tmp。
然后,我们执行select count(*) from user_info_tmp;可看到:
hadoop生态系统学习之路(六)hive的简单使用
同样的是将sql转为mr执行。
最后,执行insert overwrite table user_info select * from user_info where 1=0;清空表数据。
执行drop table user_info_tmp;便可删除表,如下:
hadoop生态系统学习之路(六)hive的简单使用
好了,基本命令就讲到这儿,关于外部表、分区、桶以及存储格式相关的概念大家也可以去研究下。

三、编写MR将数据直接入到hive

此MR只有Mapper,没有reducer。直接在mapper输出到hive表。
pom需新增依赖:

Mapper类:

主类:

然后,我们使用maven打个包,上传到服务器。
然后,我们准备一个user_info.txt,上传至hdfs中的/qiyongkang/input下:

注意以制表符\t分隔。
然后执行yarn jar mr-demo-0.0.1-SNAPSHOT-jar-with-dependencies.jar,在jobhistory可以看到:
hadoop生态系统学习之路(六)hive的简单使用
其实,hive的元数据是放在hdfs上,执行hadoop fs -ls /user/hive/warehouse可以看到:
hadoop生态系统学习之路(六)hive的简单使用
然后,我们在hive命令行执行 select * from user_info;可以看到:
hadoop生态系统学习之路(六)hive的简单使用
说明数据从hdfs写入到hive成功。

四、使用java jdbc连接Thrift Server查询元数据

接下来,我们使用java编写一个客户端,来查询刚才入到hive里面的数据,代码如下:

执行后,可以看到控制台输出如下:
hadoop生态系统学习之路(六)hive的简单使用
开始的异常可以忽略。可以看到数据,说明是成功的。

好了,hive就讲到这儿了。其实,hive还可以同步hbase的数据,还可以将hive的表数据同步到impala,因为它们都是使用相同的元数据,这个在后面的博文中再进行介绍。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

MySQL和MongoDB数据相互迁移

2021-12-11 11:36:11

安全运维

Ubuntu上NFS的安装配置

2021-12-19 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索