phoenix 关联hbase 基本使用参考:https://blog.csdn.net/zhangshenghang/article/details/97491597
Phoenix 创建二级索引
- hbase中有表test_article ,在表空间 test_ns ,列簇 fn 下有字段 url , text , uid ,name
- 连接phoenix
phoenix-sqlline.py hostname:2181:/hbase
- 创建视图
create view "test_ns"."test_article"( "rowkey1" VARCHAR primary key ,"fn"."url" varchar ,"fn"."text" varchar,"fn"."uid" varchar,"fn"."name" varchar) ;
这时可以直接通过sql查看视图数据,是通过phoenix从hbase中查询,过滤一些条件会慢一些
无法使用 Schema (对应Hbase 表空间),在hbase中设置以下代码
- 设置二级索引
索引名称为 MY_INDEX_URL_2 ,索引表为 "test_ns"."test_article" ,索引列为 "fn"."name" ,
如果单独索引列,不加入 INCLUDE 后面的字段,查询时只能查询索引的列
如果想显示其他列他会去hbase去扫,速度会很慢,
即 只能 SELECT "name" FROM "test_ns"."test_article" WHERE "name" = '笑忘录' ;
执行 SELECT "name","url","text" FROM "test_ns"."test_article" WHERE "name" = '笑忘录' ; 就会很慢。
加入 INCLUDE 即可查询相应设置字段
CREATE INDEX MY_INDEX_URL_2 ON "test_ns"."test_article" ("fn"."name") INCLUDE("fn"."url","fn"."text");
索引超时请查看该文章:https://blog.csdn.net/zhangshenghang/article/details/97926873
索引完成可以通过命令 !table 查看索引状态,ACTIVE即为索引成功
验证查询 600 万数据,速度在毫秒级别
SELECT "rowkey1","name","url" from "test_ns"."test_article" where "name" = '用户名称';
- 索引多列数据
CREATE INDEX MY_INDEX_TEST ON "test_ns"."test_article" ("fn"."name","fn"."url") INCLUDE("fn"."text","fn"."uid");
简单描述:create index indexName on tableName(a,b,c,...) include (d,e,f,g,....)
- 删除索引
DROP INDEX 索引名称 ON "表空间"."表名"