使用HBase API的用户,支持通过Hive访问Lindorm,具体步骤如下:
  1. 参考 历史版本适配(Jar包替换),将hive/lib中hbase-client jar替换为阿里云发布的版本,注意不要删除hive-hbase-handler-{version}.jar,这是Hive访问HBase的逻辑代码jar包。
  2. 如果之前在hive/.hiverc中或者在启动Hive时使用--auxpath参数指定了hbase依赖的,需要把加载的jar包换成新的alihbase开头的jar。

连接前的准备

  • 获取连接地址
  • 获取用户名密码
  • 将访问Lindorm的Hive机器IP加入白名单

    所有访问Lindorm的Hive机器的IP,必须加入Lindorm集群的白名单中,否则无法访问,添加白名单请参见设置白名单

在Hive中配置连接参数

在Hive中配置连接Lindorm的参数有两种参数,一种是直接配置在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一样,自由地访问Lindorm。

Hive简单使用指南

使用Hive访问Lindorm的方式与访问一致,Lindorm作为Hive外表,简单使用指南可以参考hive访问HBase,如下:

  • 进入hive cli命令行进入命令行
  • 创建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');
    插入数据
  • 查看云HBase表,hbase表已创建,数据也已写入。查看创建表
  • 在HBase中写入数据,并在Hive中查看。查看写入数据
  • 在Hive中查看:查看
  • Hive删除表,HBase表也删除。删除表
  • 查看hbase表,报错不存在表。查看
  • 如果HBase表已存在,可在Hive中HBase外表进行关联,外部表在删除时不影响HBase已创建表。
  • 云hbase中创建hbase表,并put测试数据。测试表
  • Hive中创建HBase外部关联表,并查看数据。查看数据
  • 删除Hive表不影响HBase已存在表。删除不用表

Hive更多操作HBase步骤,请参见更多操作

注意 目前暂不支持Hive直接读取Lindorm的底层文件。如果是采用关联/创建外表的方式读写是完全兼容的。