問題
假設:rowkey設計:時間_使用者id
20200101_001
20200101_002
20200102_002
20200103_003
……
根據日期和使用者id
需求:查詢002所有的資料
全表掃瞄
只要查詢的 條件不是rowkey的字首,就只能走全表掃瞄
解決
rowkey userid servertime username ip url ……
20200101_001 001
20200101
20200101_002 002
20200101
20200102_002 002
20200102
20200103_003 003
20200103
20200104_004 004
20200104
……
索引表:用於儲存原表的rowkey的
rowkey source_rk
001_20200101 20200101_001
002_20200101 20200101_002
002_20200102 20200102_002
003_20200103 20200103_003
002_20200101 20200101_002
002_20200102 20200102_002
20200101_002 002
20200101
20200102_002 002
20200102
解決方案
方案二:使用hbase的協處理器來實現
方案三:使用第三方工具實現【主要】
你可以用sql寫:create index - 自動幫你建立一張索引表,自動幫你維護資料同步
es:elk中的搜尋引擎,可以構建索引
solr:也是搜尋引擎
雜湊原則
:構建隨機雜湊的rowkey,避免有序的rowkey
長度原則
:滿足業務需求的情況下,越短越好
列族的設計
列標籤
為什麼要構建二級索引?
Hbase二級索引
hbase的查詢都是通過rowkey 要把多條件組合查詢的字段都拼接在rowkey中顯然不太可能 或者全表掃瞄再結合過濾器篩選出目標資料 太低效 所以通過設計hbase的二級索引來解決這個問題。多個查詢條件構成了多維度的組合查詢,需要根據不同組合查詢出符合條件的資料。例如 按照電影維度查詢資料適合,...
HBase 實現二級索引
使用整合mapreduce的方式建立hbase索引。主要的流程如下 1.11.2 獲取rowkey和指定欄位名稱和字段值 1.3建立put例項,value rowkey,rowkey columnname columnvalue 1.4使用identitytablereducer將資料寫入索引表 類...
HBase二級索引的設計
摘要 最近做的乙個專案涉及到了多條件的組合查詢,資料儲存用的是hbase,恰恰hbase對於這種場景的查詢特別不給力,一般hbase的查詢都是通過rowkey 要把多條件組合查詢的字段都拼接在rowkey中顯然不太可能 或者全表掃瞄再結合過濾器篩選出目標資料 太低效 所以通過設計hbase的二級索引...