云数据库HBase支持通过Hive读写数据,本文介绍如何配置Hive并读写云数据库HBase的数据。

前提条件

  • 已将Hive所在的Hadoop集群所有的节点的IP加入到云数据库HBase实例的白名单中,具体操作请参见设置白名单
  • 已获取云数据库HBase的zookeeper访问地址。

操作步骤

  1. 进入Hive配置目录,例如:/etc/ecm/hive-conf/
  2. 创建hbase-site.xml配置文件。
  3. hbase-site.xml配置文件下编写以下语句。
    <property>
      <name>hbase.zookeeper.quorum</name>
      <value>hb-xxx-001.hbase.rds.aliyuncs.com,hb-xxx-002.hbase.rds.aliyuncs.com,hb-xxx-003.hbase.rds.aliyuncs.com</value>
    </property>
    说明 value为云数据库HBase的zookeeper访问地址。如果您使用的是ECS自建的Hive时,不需要配置value可以直接和云数据库HBase连接。
  4. 在Hive中读写云数据库HBase表。
    • 如果云数据库HBase表不存在,可在Hive中直接创建云数据库HBase的关联表。
      1. 使用以下命令进入Hive cli命令行。
        hive
      2. 执行如下语句,创建云数据库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");
      3. 执行如下语句,通过Hive插入云数据库HBase表的数据。
        insert into hive_hbase_table values(212,'bab');
        说明 如果返回结果是OK表示插入数据操作成功。
      4. 执行如下命令,查看云数据库HBase表是否创建成功。
        list
      5. 执行如下命令,查看云数据库HBase表中是否成功插入数据。
        scan 'hive_hbase_table'
      6. 执行如下语句,在云数据库HBase中写入数据。
        put 'hive_hbase_table','132','cf1:val','acb'
      7. 执行如下语句,在Hive中查看云数据库HBase表格的数据。
        select * from hive_hbase_table;
      8. 执行如下语句,在Hive中删除创建的表。
        drop table hive_hbase_table;
        说明 删除云数据库HBase表格后在HBase中查看表格,返回表格不存在。
    • 如果云数据库HBase表已存在,可在Hive中云数据库HBase外表进行关联,外部表在删除时不影响云数据库HBase已创建表。
      1. 在云数据库HBase中创建HBase表,并执行put命令测试数据。
        create 'hbase_table','f'
        put 'hbase_table','1122','f:col1','hello'
        put 'hbase_table','1122','f:col2','hbase'
      2. 在Hive中创建云数据库HBase外部关联表,并查看数据。
        CREATE external table hbase_table(key int, col1 string, col2 string)
        STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
        WITH SERDEPROPERTIES ("hbase.columns.mapping" = "f:col1,f:col2")
        TBLPROPERTIES ("hbase.table.name" = "hbase_table", "hbase.mapred.output.outputtable" = "hbase_table");
        
        select * from hbase_table;
      3. 删除云数据库HBase外部关联表。
        drop table hbase_table;
        说明 删除云数据库HBase外部关联表后云数据库HBase已存在的表不受影响。

相关资源

通过Hive对云数据库HBase进行更多操作,可参考官方文档