通过Hive访问HBase增强版

本文介绍如何通过Hive访问HBase增强版。

前提条件

  • HBase增强版集群为2.4.3及以上版本。如何查看或升级当前版本,请参见小版本升级

  • 已将客户端IP地址添加至HBase增强版集群的白名单。如何添加,请参见设置白名单和安全组

  • 已在控制台获取HBase增强版集群的连接地址(Java API访问地址)。

注意事项

  • 如果您想要通过公网访问,在执行文本操作前,需要将HBase社区版客户端更换为阿里云HBase客户端。具体操作,请参见升级HBase Java SDK

  • 如果应用部署在ECS实例,通过专有网络访问HBase增强版集群前,需要确保HBase增强版集群和ECS实例满足以下条件,以保证网络的连通性。

    • 所在地域相同,并建议所在可用区相同(以减少网络延时)。

    • ECS实例与HBase增强版集群属于同一专有网络。

在Hive中配置连接参数

  • 方式一:在hive-site.xml配置文件中添加访问配置。

    <configuration>
          <!--
       集群的Java API连接地址,在控制台页面的数据库连接界面获取
        -->
        <property>
            <name>hbase.zookeeper.quorum</name>
            <value>ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020</value>
        </property>
     </configuration>
  • 方式二:在Hive Client中用命令的方式配置。

    // 集群的Java API连接地址,在控制台页面的数据库连接界面获得
     set hbase.zookeeper.quorum=ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020

操作步骤

重要

目前暂不支持Hive直接读取HBase增强版的底层文件,但支持通过关联或创建外表的方式在HBase增强版中读写数据。

  1. 在Hive Client中设置需要访问的HBase增强版集群的连接地址。

    hive
    // 集群的Java API连接地址
    set hbase.zookeeper.quorum=ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020
  2. 在HBase增强版中创建表hive_hbase_table。

    CREATE 'hive_hbase_table','cf1'
  3. 在Hive中创建外表。

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

    返回结果显示OK,表示外表创建成功。

  4. 插入数据并查看是否插入成功。

    • 在Hive中往外表插入数据,并在HBase增强版中查看数据是否插入成功。

      插入数据:

      insert into hive_hbase_table values(212,'bab');

      在HBase增强版中查看数据是否插入成功:

      scan 'hive_hbase_table'

      返回结果如下:

      ROW                   COLUMN+CELL
      212                   column=cf1:val, timestamp=2023-03-13T15:35:10.270, value=bab  
    • 在HBase增强版中往表hive_hbase_table中插入数据,并在Hive中查看数据是否插入成功。

      插入数据:

      put 'hive_hbase_table','213','cf1:val','dadsadasda'

      在Hive中查看数据是否插入成功:

      SELECT * FROM hive_hbase_table;

      返回结果如下:

      212   bab
      213   dadsadasda