1. 啟用協處理器aggregation(enable coprocessor aggregation)
兩種方法:
(1) 啟動全域性aggregation,能夠操作所用表上的資料。通過修改hbase-site.xml檔案實現,
<property
>
<name
>hbase.coprocessor.user.region.classes
name
>
<value
>org.apache.hadoop.hbase.coprocessor.aggregateimplementation
value
>
property
>
(2)啟動表aggregation,只對特定的表生效。通過hbase shell來實現:
2.1 disable 指定表:hbase> disable 'mytable'
2.2 新增aggregation hbase> alter 'mytable', method =>'table_att','coprocessor'=>'|org.apache.hadoop.hbase.coprocessor.aggregateimplementation||'
2.3 重啟指定表 hbase> enable 'mytable'
2. 統計行數**(code snippet)
public classmyaggregationclient}
3.案例,建立二級索引
hbase coprocessor 其中的乙個作用是使用observer建立二級索引。
案例:要查詢指定店鋪指定客戶購買的訂單,首先有一張訂單詳情表,它以被處理後的訂單id作為rowkey;
其次有一張以客戶nick為rowkey的索引表,表結構如下:
rowkey family
dp_id+buy_nick1 tid1:null tid2:null
dp_id+buy_nick2 tid3:null
該錶可以通過coprocessor來構建,例項**:
public classtestcoprocessorextendsbaseregionobservertable.close();
}}
即繼承baseregionobserver類,實現preput方法,在插入訂單詳情表之前,向索引表插入索引資料。
4.索引表的使用
現在索引表get索引表,獲取tids,然後根據tids查詢訂單詳情表。
當有多個查詢條件(多張索引表),根據邏輯運算子(and, or)確定tids。
5.使用時注意事項
(1)
索引表是一張普通的
hbase
表,為安全考慮需要開啟
hlog
記錄日誌。
(2)
索引表的
rowkey
最好是不可變數,避免索引表中產生大量的髒資料。
(3)
如上例子,
column
是橫向擴充套件的(寬表),
rowkey
設計除了要考慮
region
均衡,也要考慮
column
數量,即表不要太寬。建議不超過
3位數。
(4)
如上**,乙個
put操作其實是先後向兩張表
put資料,為保證一致性,需要考慮異常處理,建議異常時重試。
6. 效率情況
put操作效率不高,如上**,每插入一條資料需要建立乙個新的索引表連線(可以使用
htablepool
優化),向索引表插入資料。即耗時是雙倍的,對
hbase
的集群的壓力也是雙倍的。當索引表有多個時,壓力會更大。
查詢效率比
filter
高,毫秒級別,因為都是
rowkey
的查詢。
如上是估計的效率情況,需要根據實際業務場景和集群情況而定,最好做預先測試。
7. coprocessor二級索引方法優劣
優點:
在put壓力不大,索引region均衡的情況下,查詢很快。
缺點:業務性比較強,若有多個欄位的查詢,需要建立多張索引表,需要保證多張表的資料一致性,且在
hbase
的儲存和記憶體上都會有更高的要求。
SpringData MongoDB 入門案例
建立工程,引入座標 org.springframework.data spring data mongodb 2.2.1.release junit junit 4.12 org.springframework spring test 5.1.6.release 建立配置檔案 建立實體類 使用 do...
SQL IDENTITY INSERT作用案例詳解
一般情況下,當資料表中,莫一列被設定成了標識列之後,是無法向標識列中手動的去插入標識列的顯示值。但是,可以通過設定set identity insert屬性來實現對標識列中顯示值的手動插入。寫法 注意 identity insert的開啟on和關閉off是成對出現的,所以,在執行完手動插入操作之後,...
vue專案中字型檔案過大 壓縮字型檔案
目前做的乙個vue專案當中引入了外部的字型檔案,打包之後測試發現載入過慢,需等待較長時間才能看到效果,特此記錄在vue專案中壓縮字型的操作.字蛛是乙個中文字型壓縮器,通過分析本地 css 與 html 檔案獲取 webfont 中沒有使用的字元,並將這些字元資料從字型中刪除以實現壓縮,同時生成跨瀏覽...