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
字段.