4.2 配置 HBase 支持 Phoenix 创建二级索引

需要先给 HBase 配置支持创建二级索引

步骤 1: 添加如下配置到 HBase 的 Hregionerver 节点的 hbase-site.xml

<!-- phoenix regionserver 配置参数 -->
<property>
    <name>hbase.regionserver.wal.codec</name>
    <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>

<property>
    <name>hbase.region.server.rpc.scheduler.factory.class</name>
    <value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>

<property>
    <name>hbase.rpc.controllerfactory.class</name>
    <value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory</value>
    <description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>

步骤 2: 添加如下配置到 HBase 的 Hmaster 节点的 hbase-site.xml

<!-- phoenix master 配置参数 -->
<property>
    <name>hbase.master.loadbalancer.class</name>
    <value>org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer</value>
</property>

<property>
    <name>hbase.coprocessor.master.classes</name>
    <value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
</property>

步骤 3: 测试是否支持

准备数据:

create table user_1(id varchar primary key, name varchar, addr varchar)

upsert into user_1 values ('1', 'zs', 'beijing');
upsert into user_1 values ('2', 'lisi', 'shanghai');
upsert into user_1 values ('3', 'ww', 'sz');

默认情况下, 只要 rowkey 支持索引(就是上面的 id)

其他字段是不支持索引的:

给 name 字段添加索引:

create index idx_user_1 on user_1(name)

注意: 这种索引, 对 name 创建的索引, 则查询的时候也必须只查询 name 字段.

results matching ""

    No results matching ""