本文主要介绍Phoenix索引状态的生命周期,帮助大家解惑“为什么我的phoenix索引不能正常使用了?” 索引状态 索引总共有以下几个状态,其状态信息存储在SYSTEM.CATALOG表中.可以通过以下SQL来查看所有索引表信息: select TABLE_NAME,DATA_TABLE_NAME,INDEX_TYPE,INDEX_STATE,INDEX_DISABLE_TIMESTAMP from system.catalog where INDEX_TYPE is not null; SQ
apple=# create table test(id integer, info text); CREATE TABLE apple=# insert into test select generate_series(1, 100000), md5('test'); INSERT 0 100000 apple=# select * from test limit 1; id | info ----+---------------------------------- 1 | 098f6bcd
phoenix作为查询引擎,为了提高查询效率,为phoenix表创建了二级索引,而数据是sparkstreaming通过hbase api直接向hbase插数据.那么问题来了,对于phoenix的二级索引,直接插入底层hbase的源表,不会引起二级索引的更新,从而导致phoenix索引数据和hbase源表数据不一致.而对于spark+phoenix的写入方式,官方有文档说明,但是有版本限制,以下是官方原文: To ensure that all requisite Phoenix / HBase