淘先锋技术网

首页 1 2 3 4 5 6 7

Hive 与Hbase 整合

原理:

HiveHBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类, 大致意思如图所示:

附件:

编译好的hive-hbase-handler-1.2.1.jar,可以直接使用

环境 —— jdk1.8.0_65hadoop2.6.0 单节点;hbase1.2.1hive1.2.1hbase使用自带内嵌的zookeeper

步骤

1、 重新编译apache-hive-1.2.1-src\hbase-handler\src 生成hive-hbase-handler-1.2.1.jar替换掉$HIVE_HOME/lib下的hive-hbase-handler-1.2.1.jar

2、 启动hadoop单节点sbin/start-all.sh

3、 启动hbase :bin/start-hbase.sh

如果没有JobHistoryServer进程,单独启动一下——$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh stop historyserver

4、 Hive启动:bin/hive -hiveconf hbase.master=single:60000

Single:为本机的ip地址

5、 执行:创建一张hbase相互关联的表

CREATE TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "xyz");

6、 创建一张hive表CREATE TABLE pokes (foo INT, bar STRING);

7、 数据导入

LOAD DATA LOCAL INPATH '/home/hadoop/poke.txt' OVERWRITE INTO TABLE pokes;

8、 在关联表中插入数据

INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=98;

9、 hive查看数据

select * from  hbase_table_1;

10、 在hbase查看数据

scan 'xyz'

插入数据put 'xyz','100','cf1:val','www.360buy.com'

Hive中查看hbase插入的数据hive> select * from hbase_table_1 

最终的效果:

以上整合过程和操作步骤已经执行完毕,现在Hive中添加记录HBase中有记录添加,同样你在HBase中添加记录Hive中也会添加, 表示Hive与HBase整合成功,现在可以在HBase写入,在Hive中查询?因为HBase 不支持复杂的查询,但是HBase可以作为基于 key 获取一行或多行数据,或者扫描数据区间,以及过滤操作。而复杂的查询可以让Hive来完成,一个作为存储的入口(HBase),一个作为查询的入口(Hive)。