Phoenix創建二級索引及使用

一、CDH5.14集羣下Phoenix4.14.0安裝及性能對比phoenix/impala/hive

二、CDH6.2中使用parcel離線安裝Phoenix5.0.0

三、使用Phoenix映射hbase表創建表和視圖

之前提到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類似了,不多贅述。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章