推特 阿里云技术文档正文

Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版

admin 阿里云技术文档 2020-02-11 191 0
阿里云服务器优惠

Hive访问HBase增强版

替换Hive中的hbase相关的jar包

HBase增强版支持Hive访问。但是Hive调用HBase的方式并非标准用法,而是直接调用了HBase内部类。因此无法采用直接加入alihbase-connector的jar的方式做兼容,需要替换hive/lib下已有的hbase jar包。Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第1张

  1. 删除hive/lib中hbase 开头的所有的jar。如图中红框所示的所有jar文件。注意不要删除hive-hbase-handler-{version}.jar,这是Hive访问HBase的逻辑代码jar包。
  2. 点此下载alihbase兼容客户端jar包文件(所有以alihbase-开头的jar包,其他的依赖视情况而定,如果原来就有。可以不放),全部放入hive/lib目录中
  3. 如果之前在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文件中。在这个文件中加入如下配置项:

  1. <configuration>
  2. <!--
  3. 集群的连接地址,在控制台页面的数据库连接界面获得(注意公网地址和VPC内网地址)
  4. -->
  5. <property>
  6. <name>hbase.zookeeper.quorum</name>
  7. <value>ld-xxxx-proxy-hbaseue.hbaseue.xxx.rds.aliyuncs.com:30020</value>
  8. </property>
  9. <!--
  10. 设置用户名密码,默认root:root,可根据实际情况调整
  11. -->
  12. <property>
  13. <name>hbase.client.username</name>
  14. <value>root</value>
  15. </property>
  16. <property>
  17. <name>hbase.client.password</name>
  18. <value>root</value>
  19. </property>
  20. </configuration>

另一种方式是在Hive的Client中直接用命令的方式配置:

  1. set hbase.zookeeper.quorum=ld-xxxx-proxy-hbaseue.hbaseue.xxx.rds.aliyuncs.com:30020
  2. set hbase.client.username=root
  3. set hbase.client.password=root

当完成这些配置后,就可以在Hive中自由地使用HBase外表。

Hive简单使用指南

如果HBase表不存在,可在Hive中直接创建云HBase关联表

  • 进入hive cli命令行Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第2张
  • 创建HBase表
    1. CREATE TABLE hive_hbase_table(key int, value string)
    2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    3. WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
    4. TBLPROPERTIES ("hbase.table.name" = "hive_hbase_table", "hbase.mapred.output.outputtable" = "hive_hbase_table");
  • Hive中向hbase插入数据
    1. insert into hive_hbase_table values(212,'bab');
    Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第3张
  • 查看云HBase表,hbase表已创建,数据也已写入Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第4张Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第5张
  • 在HBase中写入数据,并在Hive中查看

    Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第6张

  • 在Hive中查看:

    Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第7张

  • Hive删除表,HBase表也删除

    Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第8张

  • 查看hbase表,报错不存在表Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第9张

  • 如果HBase表已存在,可在Hive中HBase外表进行关联,外部表在删除时不影响HBase已创建表

  • 云hbase中创建hbase表,并put测试数据Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第10张
  • Hive中创建HBase外部关联表,并查看数据Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第11张
  • 删除Hive表不影响HBase已存在表

    Hive访问HBase增强版_快速入门_HBase 增强版_云数据库 HBase 版 阿里云技术文档 第12张

Hive更多操作HBase步骤,可参考https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration

注意:目前暂不支持Hive关联HBase增强版的Snapshot来直接读取HFile文件。如果是采用关联/创建外表的方式读写是完全兼容的。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

-----