更新时间:2024-07-18 GMT+08:00
分享

创建索引

场景介绍

  • 对于未建立索引的用户表,该工具允许用户同时添加和构建索引。

使用方法

在HBase客户端执行以下命令即可添加或创建索引,执行命令后,指定的索引将被添加到表中并且将处于ACTIVE状态:

hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -Dindexspecs.to.add='idx1=>cf1:[c1->string],[c2]#idx2=>cf2:[c1->string],[c2]#idx3=>cf1:[c1];cf2:[c1]' -Dindexspecs.covered.family.to.add='idx2=>cf1' -Dindexspecs.covered.to.add='idx1=>cf1:[c3],[c4]' -Dindexspecs.coveredallcolumn.to.add='idx3=>true' -Dindexspecs.splitkeys.to.set='idx1=>[\x010,\x011,\x012]#idx2=>[\x01a,\x01b,\x01c]#idx3=>[\x01d,\x01e,\x01f]'

相关参数介绍如下:

  • tablename.to.index:表示创建索引的数据表的名称。
  • indexspecs.to.add:表示与索引名与对应数据表的列的映射(索引列定义)。
  • indexspecs.covered.to.add(可选):表示索引中冗余存储的数据表的列(覆盖列定义)。
  • indexspecs.covered.family.to.add(可选):表示索引表冗余存储的数据表的列族(覆盖列族定义)。
  • indexspecs.coveredallcolumn.to.add(可选):表示索引表冗余存储数据表中的所有数据(覆盖所有列)。
  • indexspecs.splitkeys.to.set(可选):表示索引表预分区切分点,建议指定,避免索引表Region成为热点。预分区指定格式为:
    • '#'用于分隔索引。
    • splitkey包含在'[]'中。
    • ','用于分隔splitkey。

      预分区每个splitkey必须由\x01开头。

  • indexspecs.to.addandbuild(可选):表示创建时同时生成索引数据,数据表数据量较大时不建议使用,建议使用索引数据生成工具完成索引数据生成。

    上述命令中的参数描述如下:

    • idx1、idx2、idx3:表示索引名称。
    • cf1、cf2:表示列族名称。
    • c1、c2、c3、c4:表示列名称。
    • string:表示数据类型。支持STRING、INTEGER、FLOAT、LONG、DOUBLE、SHORT、BYTE和CHAR。
    • '#'用于分隔索引,';' 用于分隔列族,','用于分隔列限定符。
    • 列名及其数据类型应包含在'[]'中。
    • 列名及其数据类型通过' - >'分隔。
    • 如果未指定具体列的数据类型,则使用默认数据类型(string)。

相关文档