相关接口
使用HIndex的API都在类org.apache.hadoop.hbase.hindex.client.HIndexAdmin中,相关接口介绍如下:
操作 |
接口 |
描述 |
注意事项 |
添加索引 |
addIndices() |
将索引添加到没有数据的表中。调用此接口会将用户指定的索引添加到表中,但会跳过生成索引数据。因此,在此操作之后,索引不能用于scan/filter操作。该接口的使用场景为用户想要在具有大量预先存在用户数据的表上批量添加索引,其具体操作为使用诸如TableIndexer工具之类的外部工具来构建索引数据。 |
|
addIndicesWithData() |
将索引添加到有数据的表中。此方法将用户指定的索引添加到表中,并会对已经存在的用户数据创建对应的索引数据,也可先调用该方法生成索引再在存入用户数据的同时生成索引数据。在此操作之后,这些索引立即可用于scan/filter操作。 |
删除索引 |
dropIndices() |
仅删除索引。该API从表中删除用户指定的索引,但跳过相应的索引数据。在此操作之后,索引不能用于scan/filter操作。集群在major compaction期间会自动删除旧的索引数据。
此API使用场景为表中包含大量索引数据且dropIndicesWithData()不可行。另外,也可以通过TableIndexer工具删除索引以及索引数据。 |
- 在索引的状态为ACTIVE,INACTIVE和DROPPING时,允许禁用索引的操作。
- 对于使用dropIndices()删除索引的操作,用户必须确保在将索引添加到具有相同索引名的表之前,相应的索引数据已被删除(即major compaction已完成)。
- 用户删除相应的索引会删除:
- 一个带有索引的列族。
- 组合索引所有列族中的任一个列族。
- 索引可以通过HIndex TableIndexer工具与索引数据一起删除。
|
dropIndicesWithData() |
删除索引数据。此API删除用户指定的索引,并删除用户表中与这些索引对应的所有索引数据。在此操作之后,删除的索引完全从表中删除,不再可用于scan/filter操作。 |
启用/禁用索引 |
disableIndices() |
该API禁用所有用户指定的索引,使其不再可用于scan/filter操作。 |
- 在索引的状态为ACTIVE,INACTIVE和BUILDING时允许启用索引的操作。
- 在索引的状态为ACTIVE和INACTIVE时允许禁用索引操作。
- 在禁用索引之前,用户必须确保索引数据与用户数据一致。如果在索引处于禁用状态期间没有在表中添加新的数据,索引数据与用户数据将保持一致。
- 启用索引时,可以通过使用TableIndexer工具构建索引来保证数据一致性。
|
enableIndices() |
该API启用所有用户指定的索引,使其可用于scan/filter操作。 |
查看已创建的索引 |
listIndices() |
该API可用于列出给定表中的所有索引。 |
无 |