一、CDH5.14集羣下Phoenix4.14.0安裝及性能對比phoenix/impala/hive
二、CDH6.2中使用parcel離線安裝Phoenix5.0.0
之前提到phoenix實現了hbase的sql接口,並且支持二級索引,本篇內容就介紹一下如何使用Phoenix創建二級索引及使用。
創建索引
建索引:
CREATE INDEX noah_app ON "kafka_md"."noahgroup_app" ("cf"."MD5"); #必須有列族
刪索引:
drop index NOAH_APP ON "kafka_md"."noahgroup_app";
異步建索引
使用上面的命令建索引的時候會在命令行一直等待,如果想要在後臺異步建索引則只需要在命令後加上ASYNC即可:
CREATE INDEX noah_app ON "kafka_md"."noahgroup_app" ("cf"."MD5") ASYNC;
超時時間配置
如果Hbase的數據量較多,則在建索引的時候會超時報錯,報錯後該索引的INDEX_STATE會一直處在BUILDING狀態:
java.sql.SQLTimeoutException: Operation timed out.
在CM中hbase的hbase-site.xml的服務端和客戶端新增參數然後重啓hbase之後即可解決此Error。
<property>
<name>phoenix.query.timeoutMs</name>
<value>7200000</value>
</property>
索引數據長什麼樣?
建好的索引在phoenix中的INDEX_STATE爲ACTIVE狀態,在hbase中會以索引列和rowkey列組合作爲一個索引表的rowkey。
hbase中的phoenix索引表的數據:將索引列+'\x00'+rowkey組成一個新的hbase表,這點就和mysql和oracle類似了,不多贅述。