您的位置:首页 > 其它

Hive整合HBase完整笔记(亲测)

2018-03-26 13:30 316 查看

Hive与HBase整合文档

1、  Hive整合HBase配置
1.1   拷贝hbase 相关jar包
将hbase 相关jar包拷贝到hive lib目录下
hbase-client-0.98.13-hadoop2.jar
hbase-common-0.98.13-hadoop2.jar
hbase-server-0.98.13-hadoop2.jar
hbase-common-0.98.13-hadoop2-tests.jar
hbase-protocol-0.98.13-hadoop2.jar
htrace-core-2.04.jar
hive-hbase-handler-1.0.0.jar
zookeeper-3.4.5.jar
1.2   修改hive-site.xml配置文件
将上述jar包添加到hive-site.xml配置的hive.aux.jars.path属性中。



   修改hive.zookeeper.quorum属性



    添加hbase.zookeeper.quorum属性,此属性hive-site.xml之前不存在。



1.3   修改hive-env.sh配置文件
同默认配置文件中copy一份hive-env.sh文件



修改hive-env.sh配置文件



1.4   启动Hive
上述配置完成之后,通过bin/hive命令启动hive



如果出现以上输出信息,说明hive整合hbase成功。
2、  Hive整合HBase后使用
2.1 准备测试数据
(1)测试数据文件
创建测试文件course.csv



第一列为课程名称,第二列为课程分数
(2)数据加载到HDFS
在hdfs文件系统中创建hive-hbase目录,并加载测试数据。
查看hdfs文件目录



创建/hive-hbase/course目录



将course.csv文件上传至/hive-hbase/course目录下



(3)创建Hive数据库
进入Hive Shell 客户端创建库course



(4)创建Hive表
进入Hive Shell 客户端创建外部表。
create external table if notexists course.testcourse(cname string,score int) row format delimited fieldsterminated by '\t' stored as textfile location '/hive-hbase/course';



(5)查看hive表数据
select * from course.testcourse;



从查询语句的执行结果可以看出,Hive表中的数据和hdfs上的数据一致。
2.2 创建Hive内部表
create table 建表语句声明
course.hbase_testcourse  所创建的Hive表名称
(cname string,score int) 所创建Hive表字段
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 指定使用Hive Storage Handlers
WITHSERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:score")  指定HBase表与Hive表字段映射关系。
TBLPROPERTIES("hbase.table.name"= "hbase_testcourse"); 指定HBase表名
内部表创建语句如下:
create tablecourse.hbase_testcourse(cname string,score int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITHSERDEPROPERTIES("hbase.columns.mapping" = ":key,cf:score")TBLPROPERTIES("hbase.table.name" = "hbase_testcourse","hbase.mapred.output.outputtable" = "hbase_testcourse");



(1)查看Hive中所创建的表
进入Hive Shell 客户端执行
hive> use course;
hive> show tables;



(2)查看HBase 中所创建的表
进入HBase Shell 客户端执行
bin/hbase shell





2.3 加载数据
 创建完内部表,可以通过Hive支持的insert overwrite 方式将一个表的数据导入HBase。
下面是对应的执行语句:
insert overwrite table course.hbase_testcourseselect cname,score from course.testcourse;

 


2.4 执行查询
加载完数据后,需要验证一下加载结果是否存在问题,验证一下总记录数。
select count(*) fromcourse.hbase_testcourse;





2.5 创建外部表
创建外部表适用于该表在HBase中已经存在,但在Hive中并没有相关信息。此时可以通过创建外部表的方式,为HBase现有表提供SQL查询条件。而内部表适用于Hive和HBase都没有相关表的情况。
(1)创建HBase表
进入HBase Shell客户端执行建表命令
create 'hbase_test',{ NAME =>'cf'}



(2)插入数据
执行以下命令插入数据
put 'hbase_test','hadoop','cf:score', '95'
put 'hbase_test','storm','cf:score', '96'
put 'hbase_test','spark','cf:score', '97'



(3)查看数据
执行扫描表操作
scan 'hbase_test'



(4)创建Hive外部表
进入Hive Shell 客户端,创建外部表course.hbase_test,建表命令如下所示:
create external tablecourse.hbase_test(cname string,score int) STORED BY  'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES("hbase.columns.mapping" =":key,cf:score") TBLPROPERTIES("hbase.table.name" ="hbase_test", "hbase.mapred.output.outputtable" = "hbase_test");
备注:创建外部表和创建内部表的命令基本一致,唯一的区别就是:创建内部表使用create table,创建外部表使用create external table。



(5)Hive 查看数据
执行Hive命令查询HBase 表中的数据。
select * from hbase_test;



通过创建外部表可以成功从Hive 查询HBase表中的数据。
 技术交流群:695520445
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hive HBase