Hive访问HBase增强版
替换Hive中的hbase相关的jar包
HBase增强版支持Hive访问。但是Hive调用HBase的方式并非标准用法,而是直接调用了HBase内部类。因此无法采用直接加入alihbase-connector的jar的方式做兼容,需要替换hive/lib
下已有的hbase jar包。
- 删除
hive/lib
中hbase 开头的所有的jar。如图中红框所示的所有jar文件。注意不要删除hive-hbase-handler-{version}.jar
,这是Hive访问HBase的逻辑代码jar包。 - 点此下载alihbase兼容客户端jar包文件(所有以alihbase-开头的jar包,其他的依赖视情况而定,如果原来就有。可以不放),全部放入
hive/lib
目录中 - 如果之前在
hive/.hiverc
中或者在启动Hive时使用--auxpath
参数指定了hbase依赖的,需要把加载的jar包换成新的alihbase开头的jar
连接前的准备
获取连接地址
参见连接集群,使用地址中Java API访问地址,如果是公网访问,请使用公网域名
获取用户名密码
参见连接集群,默认的用户名为root,密码为root。或者在集群管理页面中关闭ACL功能后,无需再提供用户名密码
将访问HBase的Hive机器IP加入HBase白名单
所有访问HBase的Hive机器的IP,必须加入HBase集群的白名单中,否则无法访问,添加白名单请参考访问白名单
在Hive中配置连接参数
在Hive中配置连接HBase的参数有两种参数,一种是直接配置在hive-site.xml
文件中。在这个文件中加入如下配置项:
<configuration>
<!--
集群的连接地址,在控制台页面的数据库连接界面获得(注意公网地址和VPC内网地址)
-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>ld-xxxx-proxy-hbaseue.hbaseue.xxx.rds.aliyuncs.com:30020</value>
</property>
<!--
设置用户名密码,默认root:root,可根据实际情况调整
-->
<property>
<name>hbase.client.username</name>
<value>root</value>
</property>
<property>
<name>hbase.client.password</name>
<value>root</value>
</property>
</configuration>
另一种方式是在Hive的Client中直接用命令的方式配置:
set hbase.zookeeper.quorum=ld-xxxx-proxy-hbaseue.hbaseue.xxx.rds.aliyuncs.com:30020
set hbase.client.username=root
set hbase.client.password=root
当完成这些配置后,就可以在Hive中自由地使用HBase外表。
Hive简单使用指南
如果HBase表不存在,可在Hive中直接创建云HBase关联表
- 进入hive cli命令行
- 创建HBase表
CREATE TABLE hive_hbase_table(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "hive_hbase_table", "hbase.mapred.output.outputtable" = "hive_hbase_table");
- Hive中向hbase插入数据
insert into hive_hbase_table values(212,'bab');
- 查看云HBase表,hbase表已创建,数据也已写入
- 在HBase中写入数据,并在Hive中查看
在Hive中查看:
Hive删除表,HBase表也删除
查看hbase表,报错不存在表
如果HBase表已存在,可在Hive中HBase外表进行关联,外部表在删除时不影响HBase已创建表
- 云hbase中创建hbase表,并put测试数据
- Hive中创建HBase外部关联表,并查看数据
删除Hive表不影响HBase已存在表
Hive更多操作HBase步骤,可参考https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration
注意:目前暂不支持Hive关联HBase增强版的Snapshot来直接读取HFile文件。如果是采用关联/创建外表的方式读写是完全兼容的。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论