HBase与Hive集成使用详解


前言

HBase作为分布式的NOSQL数据库,并不支持传统的SQL查询,通过将Hive框架与HBase进行集成,我们可以实现使用HQL对HBase的数据进行操作,本文对具体的操作流程进行演示与使用测试:

一、导入HBase下的jar包

当我们使用HBase与Hive集成,其本质是Hive作为HBase的客户端

因此我们需要让Hive能够读取到HBase的一些配置JAR包。

采用软链接的方式将$HBASE_HOME/lib下的对应版本的commonserverclientprotocolithtrace-core六个包链接到$HIVE_HOME/lib下:

[root@hadoop lib]# ln -s hbase-common-0.98.6-cdh5.3.6.jar /opt/cdh5.3.6/hive-0.13.1-cdh5.3.6/lib/hbase-common-0.98.6-cdh5.3.6.jar
[root@hadoop lib]# ln -s hbase-server-0.98.6-cdh5.3.6.jar /opt/cdh5.3.6/hive-0.13.1-cdh5.3.6/lib/hbase-server-0.98.6-cdh5.3.6.jar
[root@hadoop lib]# ln -s hbase-client-0.98.6-cdh5.3.6.jar /opt/cdh5.3.6/hive-0.13.1-cdh5.3.6/lib/hbase-client-0.98.6-cdh5.3.6.jar
[root@hadoop lib]# ln -s hbase-protocol-0.98.6-cdh5.3.6.jar /opt/cdh5.3.6/hive-0.13.1-cdh5.3.6/lib/hbase-protocol-0.98.6-cdh5.3.6.jar
[root@hadoop lib]# ln -s hbase-it-0.98.6-cdh5.3.6.jar /opt/cdh5.3.6/hive-0.13.1-cdh5.3.6/lib/hbase-it-0.98.6-cdh5.3.6.jar
[root@hadoop lib]# ln -s htrace-core-2.04.jar /opt/cdh5.3.6/hive-0.13.1-cdh5.3.6/lib/htrace-core-2.04.jar

完成拷贝后进入Hive的lib目录下进行检查发现几个包都拷贝进去,接下来我们还要确认三个事项:

$HBASE_HOME/lib下的zookeeper包与$HIVE_HOME/lib下是一致的。
$HBASE_HOME/lib下的guava包与$HIVE_HOME/lib下是一致的。
(不一致的话删除一个然后拷贝另一个即可。)
$HBASE_HOME/lib下存在hive-hbase-handlerjar包。

二、添加Zookeeper配置

$HIVE_HOME/conf下找到hive-site.xml添加zookeeper的地址:

<property>
  <name>hbase.zookeeper.quorum</name>
  <value>hostname1,hostname2,hostname3</value>
</property>

设置为自己zookeeper集群的主机名即可。


三、通过Hive创建HBase表测试

1、进入Hive的shell创建表:

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");

使用desc formatted hbase_table_1查看表的属性:
在这里插入图片描述
可以看到我们创建了一个名为xyz的表,类型是管理表,有key和value两个字段。

如果以上配置都没问题的话,此时我们再进入HBase的shell输入list可以看到xyz表已经在其中。

或者我们通过HDFS webUI进行查看:

Hive目录下:
在这里插入图片描述
HBase目录下:
在这里插入图片描述

2、插入数据

我们从当前Hive下随便找一个有数据的表(包含int和string字段即可),通过Hive表中已有的数据插入到HBase表中。
在这里插入图片描述
然后从Hive中执行数据导入操作:

INSERT OVERWRITE TABLE hbase_table_1 select id,name from emp1;

接下来它会通过一个MapReduce任务来完成数据的插入,完成后我们在Hive中查看数据插入是否成功:
在这里插入图片描述
数据已经成功插入表中。

进入HBase中通过scan进行查看:
在这里插入图片描述
此时的数据已经插入到HBase中,如果对HBase存储机制有所了解的话当前的写入应该仍保存在内存中。

我们再通过flush ‘xyz’将其写入HDFS后可以看到数据写入了盘。
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值