
# 批量构建HBase全局二级索引数据
#### 场景介绍
在用户的表中预先存在大量数据的情况下，可基于MapReduce任务，批量构建已有数据的索引数据。
#### 批量构建全局二级索引数据
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/notice_3.0-zh-cn.png)
- 只有处于INACTIVE状态的索引才能进行批量构建，如需重建索引数据，请先修改索引状态。
- 数据表中存在大量数据时，构建耗时较长，建议将nohup命令放在后台执行，避免操作被意外中断。
 
在HBase客户端执行以下命令可批量构建已有数据的索引数据：
**hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer** **-D** **tablename.to.index** ='*table* ' **-D** **indexnames.to.build** ='*idx1*'
相关参数介绍如下:
- **tablename.to.index**：表示需修改索引状态的数据表的名称。
- **indexnames.to.build** ：指定的需要批量生成数据的索引名，可以同时指定多个，用**#**号分隔。
- **hbase.gsi.cleandata.enabled**（可选）：表示构建索引数据前是否需要清空索引表，默认值为"false"。
- **hbase.gsi.cleandata.timeout**（可选）：表示构建索引数据前等待清空索引表超时时间，默认值为"1800"，单位为：秒。
 
