最近的專案需要使用hbase做實時查詢,由於hbase只支援一級索引,也就是使用rowkey作為索引查詢,所以對於多條件篩選查詢的支援不夠,在不建立二級索引的情況下,只能使用hbase api中提供的各種filter過濾器進行篩選,感覺查詢效率不太理想,於是考慮建立二級索引的方案。
經過google學習網上前輩們的經驗,暫時找到兩種可用的方案:
使用hbase協處理器coprocessor在寫入資料時,建立二級索引表,並將每條資料的索引寫入二級索引表中,查詢時先根據篩選條件查詢二級索引表,獲取相對應的一級索引rowkey,然後根據rowkey去資料表中獲取查詢結果。
使用solr搜尋應用伺服器,在寫入資料時,在solr中建立二級索引(甚至可以建立全文索引),查詢時先根據篩選條件獲取一級索引rowkey的集合,然後根據rowkey去資料表中獲取查詢結果。
對兩種方案進行了比較發現,第一種方案中存在的問題是無法直接獲取資料記錄總數(要獲取記錄總數,需要在寫入資料時單獨維護乙個計數器,並一直更新記錄總數),對於分頁顯示的需求不容易滿足;而solr伺服器的查詢方式類似於sql語句,支援各種查詢條件過濾、限定查詢範圍、頁數以及直接獲取記錄總數,所以我比較傾向於第二種方案。
關於兩種方案的效率問題,目前還在測試中,後面會陸續寫出第二套方案的詳細部署以及**。
第一次開部落格,先寫這麼多吧,下班!
HBase多條件篩選查詢方案
網上看到的,覺得很有用 摘下來,感謝 最近的專案需要使用hbase做實時查詢,由於hbase只支援一級索引,也就是使用rowkey作為索引查詢,所以對於多條件篩選查詢的支援不夠,在不建立二級索引的情況下,只能使用hbase api中提供的各種filter過濾器進行篩選,感覺查詢效率不太理想,於是考慮...
HBase條件查詢(多條件查詢)
author pirate leo myblog myemail codeevoship gmail.com 文中可能涉及到的api hadoop hdfs hbase begin!hbase的查詢實現只提供兩種方式 1 按指定rowkey獲取唯一一條記錄,get方法 org.apache.hado...
HBase條件查詢(多條件查詢)
author pirate leo myblog myemail codeevoship gmail.com 文中可能涉及到的api hadoop hdfs hbase begin!hbase的查詢實現只提供兩種方式 1 按指定rowkey獲取唯一一條記錄,get方法 org.apache.hado...