hbase表對映Phoenix檢視, 基於檢視的二級索引是否實時更新
1. hbase shell
建立表
create 'MY_TABLE', 'CF1','CF2'
新增資料
put 'MY_TABLE','1' ,'CF1:V1', 'uwo1'
put 'MY_TABLE','1' ,'CF2:V2', '1'
put 'MY_TABLE','1' ,'CF1:V3', '10'
put 'MY_TABLE','2' ,'CF1:V1', 'uwo2'
put 'MY_TABLE','2' ,'CF2:V2', '2'
put 'MY_TABLE','2' ,'CF1:V3', '20'
查詢hbase表資料
2. phoenix shell
建立檢視, 檢視名要和hbase表名一致
create view MY_TABLE (PK varchar primary key, CF1.V1 varchar, CF2.V2 varchar, CF1.V3 varchar);
建立二級索引
create index my_index2 on MY_TABLE(V1) include(v2);
查詢檢視
select * from MY_TABLE;
查詢二級索引
select * from my_index2;
以上一切正常, 下面往hbase表中新增資料, 觀察view和索引的情況
3. hbase shell
put 'MY_TABLE','3' ,'CF1:V1', 'uwo3'
put 'MY_TABLE','3' ,'CF2:V2', '3'
put 'MY_TABLE','3' ,'CF1:V3', '30'
put 'MY_TABLE','4' ,'CF1:V1', 'uwo4'
put 'MY_TABLE','4' ,'CF2:V2', '4'
put 'MY_TABLE','4' ,'CF1:V3', '40'
put 'MY_TABLE','6' ,'CF1:V1', 'uwo6'
put 'MY_TABLE','6' ,'CF2:V2', '6'
put 'MY_TABLE','6' ,'CF1:V3', '60'
查詢hbase表
4. phoenix shell
檢視檢視
select * from MY_TABLE;
顯示正常
檢視索引
select * from my_index2;
可見, 索引並沒有隨著hbase表的更新而更新
結論
用檢視view直接對映hbase表的時候, 並不能使用二級索引, 除非資料是永久的, 不會更新