创建HBase索引进行数据查询
操作场景
HBase是一个Key-Value类型的分布式存储数据库,HIndex为HBase提供了按照某些列的值进行索引的能力,缩小搜索范围并缩短时延。
使用约束
- 列族应以“;”分隔。
- 列和数据类型应包含在“[]”中。
- 列数据类型在列名称后使用“->”指定。
- 如果未指定列数据类型,则使用默认数据类型(字符串)。
- “#”用于在两个索引详细信息之间进行分隔。
- 以下是一个可选参数:
如果不设置该参数,则默认值为1000。
创建HBase HIndex
- 安装HBase客户端,详情参见HBase客户端使用实践。
- 进入客户端安装路径,例如“/opt/client”
cd /opt/client
- 配置环境变量。
source bigdata_env
- 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。
kinit 组件业务用户
- 执行以下命令访问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。