更新时间:2025-09-26 GMT+08:00
分享

配置Hive访问HBase数据

操作场景

Hive on HBase即是允许用户通过Hive的SQL接口查询和操作存储在HBase中的数据,将HBase的高效存储和实时读写能力与Hive的SQL查询能力相结合,提供了一种灵活且高效的数据处理方式。

在MRS中,Hive支持通过内部表和外部表两种方式来访问和处理存储在HBase中的数据。本文通过示例为您介绍,如何使用MRS上的Hive处理MRS HBase数据。

前提条件

  • 已安装集群客户端,具体请参考安装客户端章节。例如安装目录为“/opt/hadoopclient”,以下操作的客户端目录只是举例,请根据实际安装目录修改。
  • 集群已启用Kerberos认证(安全模式),需准备用于创建Hive on HBase表的用户,该用户需属于“hive”用户组,并配置HBase相关权限:

Hive通过内表访问HBase

如果HBase中没有已经创建好的表,则可以在Hive中创建表,Hive会自动把表结构和数据写入到HBase中。以下示例为在Hive中新建表访问HBase。

  1. 以客户端安装用户登录安装客户端的节点,执行以下命令配置环境变量并认证用户。

    切换至客户端安装目录:

    cd 客户端安装目录

    加载环境变量:

    source bigdata_env

    认证用户,未开启Kerberos认证的集群请跳过该步骤:

    kinit Hive业务用户

  2. 执行以下命令登录Hive客户端:

    beeline

  3. 在Hive中创建HBase表,插入并查看表数据。

    1. 执行以下命令,在Hive中创建HBase表,例如“hive_hbase_table”:
      create table hive_hbase_table(id int, name string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping" = ":key,cf1:name") tblproperties ("hbase.table.name" = "hive_hbase_table");
    2. 执行以下命令,向表中插入数据:
      insert into table hive_hbase_table values(12,'abab');
    3. 执行以下命令,查看表数据:
      select * from hive_hbase_table;

      查看到的表数据为:

      图1 查看Hive表数据

  4. 执行以下命令退出Hive客户端:

    !q

  5. 执行以下命令登录HBase客户端:

    hbase shell

  6. 执行以下命令,查看是否已经通过Hive在HBase中创建了表:

    describe 'hive_hbase_table'

    命令执行后,回显结果图2所示,即表示已经通过Hive在HBase中创建了表“hive_hbase_table”。

    图2 查看HBase表

  7. 执行以下命令,在HBase中查看Hive写的数据是否已存在:

    scan 'hive_hbase_table'

    查看到的数据与3.b插入的数据一致,则说明已成功在Hive中创建了HBase表。

    图3 查看HBase表数据

Hive通过外表访问HBase

如果已经在HBase中创建了表,想通过Hive访问,则可以使用Hive外表的方式与HBase中的表建立映射关系,进而通过Hive访问HBase中已经存在的表。

  1. 以客户端安装用户登录安装客户端的节点,执行以下命令配置环境变量并认证用户。

    切换至客户端安装目录:

    cd 客户端安装目录

    加载环境变量:

    source bigdata_env

    认证用户,未开启Kerberos认证的集群请跳过该步骤:

    kinit Hive业务用户

  2. 执行以下命令登录HBase客户端:

    hbase shell

  3. 在HBase中创建并查询表数据。

    1. 执行以下命令,在HBase中创建表:
      create 'hbase_table','f'
    2. 执行以下命令,向表中插入数据:
      put 'hbase_table','12','f:col1','hello'
    3. 执行以下命令,查看表数据:
      scan 'hbase_table'
      图4 查看HBase表数据

  4. 执行Ctrl + C退出HBase客户端
  5. 执行以下命令登录Hive客户端:

    beeline

  6. 在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");

  7. 执行以下命令,在Hive中查看“hbase_table”数据:

    select * from hbase_table;

    查看到的数据与3.b插入的数据一致,则说明已成功在Hive中创建了HBase外表。

    图5 查看Hive表数据

相关文档

相关文档