Hbase和Phoenix二级索引测试

目录

前言

生成测试数据

Phoenix创建映射表和视图

创建映射表

创建视图

其他操作

创建二级索引

 测试二级索引

 问题:

1、创建完二级索引之后,hbase新增数据,索引是否会自动创建


前言

本文主要测试Phoenix二级索引。

生成测试数据

之前的文章中详细的介绍了数据生成和导入hbase中的过程,详情请点击这里

Phoenix创建映射表和视图

创建映射表

#删除映射表时,hbase中的数据也会被删除
create table "test"("rowkey" varchar primary key,"cf"."2502" varchar,"cf"."2503" varchar,"cf"."2000" varchar,"cf"."VID" varchar,"cf"."VIN" varchar);

创建视图

#删除视图时,hbase中的数据不受影响
create view "test"("rowkey" varchar primary key,"cf"."2502" varchar,"cf"."2503" varchar,"cf"."2000" varchar,"cf"."VID" varchar,"cf"."VIN" varchar);

其他操作

#where条件查询
select * from "test" where VIN='LNPHDRAG4LVKEF9994';

#查看执行计划,如果出现FULL SCAN则没有走索引,属于全表扫描
explain select * from "dingzq" where VIN='LNPHDRAG4LVKEF9994';

创建二级索引

create index "index_test" on "dingzq" ("cf"."VIN");

 执行之后可能会报如下错误:

Error: ERROR 1029 (42Y88): Mutable secondary indexes must have the hbase.regionserver.wal.codec property set to org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec in the hbase-sites.xml of every region server. tableName=index_test (state=42Y88,code=1029)

在hbase-site.xml中添加以下配置即可:

<property> 
  <name>hbase.regionserver.wal.codec</name> 
  <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value> 
</property>

再次创建,成功

测试二级索引

#没有创建索引之前,执行以下命令,执行计划是FULL SCAN全局扫描,创建完索引之后执行计划为RANGE SCAN
explain select 2502,2503 from "test" where VIN='LNPHDRAG4LVKEF9994';

 没有创建索引执行:

 创建索引之后执行:

问题:

1、创建完二级索引之后,hbase新增数据,索引是否会自动创建

下图是网友总结的,测了部分,确实是这种情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值