基於Phoenix構建hbase的二級索引

2021-10-03 21:27:16 字數 1838 閱讀 6808

hbase表後期按照rowkey查詢效能是最高的。rowkey就相當於hbase表的一級索引,但是後期我們進行查詢的時候大多時候都會按照一定條件去查詢,這時我們是不知道rowkey的值,我們也可以通過hbase的過濾器去實現,但是在查詢的時候會觸發大量的底層檔案掃瞄,效率比較低,這時我們可以以空間去時間 去實現hbase的二級索引,提高查詢效率。

hbase二級索引:

hbase二級索引思想:

phoenix+hbase方案 :

在hbase-site.xml

hbase.regionserver.wal.codec

org.apache.hadoop.hbase.regionserver.wal.indexedwaleditcodec

hbase.region.server.rpc.scheduler.factory.class

org.apache.hadoop.hbase.ipc.phoenixrpcschedule***ctory

hbase.rpc.controlle***ctory.class

org.apache.hadoop.hbase.ipc.controller.serverrpccontrolle***ctory

實操:一張user_info表中有50萬條資料

在hbase中查詢count 使用了38.7s

在phoenix 中建立對映表

create view user_info(

"rowkey" varchar primary key,

"info"."iid"  varchar,

"info"."icred"  varchar,

"info"."itime"  varchar,

"info"."ipassword"  varchar,

"info"."iage"  varchar,

"info"."iuse"  varchar,

"info"."ijsp"  varchar,

"info"."iwin"  varchar,

"info"."ibrowser"  varchar,

"info"."iip"  varchar,

"info"."iprovince"  varchar,

"info"."icity"  varchar,

"info"."ipage"  varchar,

"info"."igoods"  varchar,

"info"."ishop"  varchar

) as select * from user_info;

在phoenix中查詢數量:

可以看到只用了8.883s 但是這個時間還有沒有達到毫秒級別,這裡我們可以通過在phoenix中建立索引。

查詢iage 為77的資料 ,用時6.45s

測試使用 global indexing建立全域性索引:

create index user_cookie_id_index on user ("iage"); 

查詢iage 為77的資料 :

基於Drupal的CMS構建

1.在 var www 下建立資料夾 sync a html html zhxue 2.修改配置檔案,新增 的資料庫資訊 vi sites default settings.php databases array default array default array database openci...

基於redis構建訊息佇列

一般來說,訊息佇列有兩種場景 一種是發布者訂閱者模式 一種是生產者消費者模式。利用redis這兩種場景的訊息佇列都能夠實現。定義 1 redis作為訊息中介軟體 1 producer consumermode 該方式是借助redis的list結構實現的。producer呼叫redis的lpush往特...

Vue CLI 基於webpack構建優化

參考vue cli 基於webpack構建優化,資源打包與資源預壓縮 yarn add filemanager webpack plugin dev d 宣告外掛程式 const filemanagerplugin require filemanager webpack plugin 外掛程式配置。...