-
批量构建全局二级索引数据 只有处于INACTIVE状态的索引才能进行批量构建,如需重建索引数据,请先修改索引状态。 数据表中存在大量数据时,构建耗时较长,建议将nohup命令放在后台执行,避免操作被意外中断。 在HBase客户端执行以下命令可批量构建已有数据的索引数据: hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -Dindexnames.to.build='idx1' 相关参数介绍如下: tablename.to.index:表示需修改索引状态的数据表的名称。 indexnames.to.build:指定的需要批量生成数据的索引名,可以同时指定多个,用#号分隔。 hbase.gsi.cleandata.enabled(可选):表示构建索引数据前是否需要清空索引表,默认值为“false”。 hbase.gsi.cleandata.timeout(可选):表示构建索引数据前等待清空索引表超时时间,默认值为“1800”,单位为:秒。
-
场景介绍 使用HBase二级索引可以加速带Filter的条件查询,支持HIndex(本地索引,即Local Secondary Index,简称为LSI)和全局二级索引(Global Secondary Index,简称为GSI)。全局二级索引相较于本地索引(HIndex),查询性能更好,适合读时延要求高的场景。 HBase全局二级索引,使用独立的索引表存储索引数据。当给定的查询条件可以命中索引时,可以将对数据表的全表查询转换为对索引表的精确范围查询,提升查询速度。开启全局二级索引特性后,应用侧代码无需特殊修改,简单易用。 HBase全局二级索引支持以下重点特性: 复合索引 支持指定多个列作为索引列(支持跨列族)。 覆盖索引 支持指定多个列/列族作为覆盖列/列族冗余存储到索引表中,用于索引查询中对非索引列的快速查询。 索引TTL 支持索引表TTL。用于支持数据表开启TTL的场景,为了保障与数据表的一致性,索引表TTL将自动继承数据表索引列和覆盖列的TTL,不支持手动指定。 索引在线变更 支持索引在线创建、删除和修改状态,不影响数据表读写。 索引在线修复 当查询命中的索引数据无效时,可以触发索引修复,保障最终查询结果正确。 索引工具 支持索引一致性检查、索引修复、索引创建/删除/修改状态、索引数据重建等功能。
-
删除HBase全局二级索引 在HBase客户端执行以下命令可删除某个索引: hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -Dindexnames.to.drop='idx1#idx2' 相关参数介绍如下: tablename.to.index:表示需删除的索引所在的表名称。 indexnames.to.drop:表示需要删除的索引名称,可以同时指定多个,用#号分隔。