更新时间:2023-03-17 GMT+08:00

使用二级索引

操作场景

HIndex为HBase提供了按照某些列的值进行索引的能力,缩小搜索范围并缩短时延。

使用约束

  • 列族应以“;”分隔。
  • 列和数据类型应包含在“[]”中。
  • 列数据类型在列名称后使用“->”指定。
  • 如果未指定列数据类型,则使用默认数据类型(字符串)。
  • “#”用于在两个索引详细信息之间进行分隔。
  • 以下是一个可选参数:

    -Dscan.caching:在扫描数据表时的缓存行数。

    如果不设置该参数,则默认值为1000。

  • 为单个Region构建索引是为了修复损坏的索引。

    此功能不应用于生成新索引。

操作步骤

  1. 安装HBase客户端,详情参见使用HBase客户端
  2. 进入客户端安装路径,例如“/opt/client”

    cd /opt/client

  3. 配置环境变量。

    source bigdata_env

  4. 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。

    kinit 组件业务用户

  5. 执行以下命令访问Hindex。

    hbase org.apache.hadoop.hbase.hindex.mapreduce.TableIndexer

    表1 HIndex常用命令

    说明

    命令

    增加索引

    TableIndexer-Dtablename.to.index=table1-Dindexspecs.to.add='IDX1=>cf1:[q1->datatype],[q2],[q3];cf2:[q1->datatype],[q2->datatype]#IDX2=>cf1:[q5]'

    构建索引

    TableIndexer -Dtablename.to.index=table1 -Dindexnames.to.build='IDX1#IDX2'

    删除索引

    TableIndexer -Dtablename.to.index=table1 -Dindexnames.to.drop='IDX1#IDX2'

    禁用索引

    TableIndexer -Dtablename.to.index=table1 -Dindexnames.to.disable='IDX1#IDX2'

    同时添加和构建索引

    TableIndexer -Dtablename.to.index=table1 -Dindexspecs.to.add='IDX1=>cf1:[q1->datatype],[q2],[q3];cf2:[q1->datatype],[q2->datatype]#IDX2=>cf1:[q5]' -Dindexnames.to.build='IDX1'

    为单个Region构建索引

    TableIndexer -Dtablename.to.index=table1 -Dregion.to.index=regionEncodedName -Dindexnames.to.build='IDX1#IDX2'

    • IDX1:索引名称。
    • cf1:列族名称。
    • q1:列名称。
    • datatype:数据类型,包括String,Integer,Double,Float,Long,Short,Byte,Char。