1. 程式人生 > >hbase表對映Phoenix檢視, 基於檢視的二級索引是否實時更新

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表的時候, 並不能使用二級索引, 除非資料是永久的, 不會更新