HBase學習之三: hbase filter(過濾器)和coprocessor(協處理器)統計行數的簡單應用
1.關於filter的用法及說明參見這三篇博文,基本涵蓋了絕大部分filter,很詳細,還有實測程式碼,感謝博主的付出,特收藏.
HBase Filter:http://blog.sina.com.cn/s/blog_7431c7c50101c5ig.html
HBase(0.96以上版本)過濾器Filter詳解及例項程式碼:http://blog.csdn.net/u010967382/article/details/37653177
HBase Filter介紹及執行流程:http://my.oschina.net/cloudcoder/blog/289649
2.通過coprocessor統計行數
關於協處理器的介紹和用法網上很多資料,可以自行查詢腦補,值得注意的是協處理器在hbase伺服器端執行,開發者可自定義處理器放置於伺服器端然後再客戶端呼叫,下面是一個簡單的通過協處理器統計表行數的例子:
<span style="font-family:Arial Black;"><span style="font-family:Times New Roman;"> AggregationClient aggregation = new AggregationClient(conf);
Long count = aggregation.rowCount(table, new LongColumnInterpreter(), s);//table為HTable例項,s為Scan例項
int totalCount = count.intValue();</span></span>
要使得上述程式碼生效,還必須需要讓要統計的表具有聚合功能。如下在hbase shell執行下面的命令:* disable 'emp'
* alter 'emp',METHOD=>'table_att','coprocessor'=>'|org.apache.hadoop.hbase.coprocessor.AggregateImplementation||'
* enable 'emp'
要刪除協處理器,如下:
* disable 'emp'
* alter 'emp',METHOD=>'table_att_unset',NAME=>'coprocessor$1'
* enable 'emp'
現實情況是不可能統計一個表的行數前去命令列執行下命令,於是可在統計行數前加上如下程式碼:
<span style="font-family:Arial Black;"><span style="font-family:Times New Roman;"> /**
* 使表具有聚合功能
*
* @param tableName
* 表名
*/
@SuppressWarnings("resource")
private void enableAggregation(String tableName) {
String coprocessorName = "org.apache.hadoop.hbase.coprocessor.AggregateImplementation";
try {
HBaseAdmin admin = new HBaseAdmin(conf);
HTableDescriptor htd = admin.getTableDescriptor(Bytes
.toBytes(tableName));
List<String> coprocessors = htd.getCoprocessors();
if (coprocessors != null && coprocessors.size() > 0) {
return;
} else {
admin.disableTable(tableName);
htd.addCoprocessor(coprocessorName);
admin.modifyTable(tableName, htd);
admin.enableTable(tableName);
}
} catch (TableNotFoundException e) {
// TODO Auto-generated catch block
log.error(e);
} catch (MasterNotRunningException e) {
// TODO Auto-generated catch block
log.error(e);
} catch (ZooKeeperConnectionException e) {
// TODO Auto-generated catch block
log.error(e);
} catch (IOException e) {
// TODO Auto-generated catch block
log.error(e);
}
}</span></span>
相關文章
- HBase Filter 過濾器之 ValueFilter 詳解Filter過濾器
- hbase過濾器過濾器
- HBase協處理器載入的三種方式
- 好程式設計師大資料培訓分享HBase Filter過濾器概述程式設計師大資料Filter過濾器
- 從零自學Hadoop(22):HBase協處理器Hadoop
- HBase(0.96以上版本)過濾器Filter詳解及例項程式碼過濾器Filter
- Hbase 布隆過濾器BloomFilter介紹過濾器OOMFilter
- css的過濾器的簡單學習CSS過濾器
- Filter過濾器Filter過濾器
- Filter過濾器的使用Filter過濾器
- PHP 過濾器(Filter)PHP過濾器Filter
- Java Filter過濾器JavaFilter過濾器
- lucene Filter過濾器Filter過濾器
- 簡單的限流過濾器過濾器
- servlet的過濾器filter類Servlet過濾器Filter
- mongodb和hbase的簡單比較MongoDB
- hbase shell - 使用filter進行scanFilter
- JavaWeb 中 Filter過濾器JavaWebFilter過濾器
- AOP程式設計--Filter使用,過濾器和攔截器的區別程式設計Filter過濾器
- SpringCloud學習系列之七 ----- Zuul路由閘道器的過濾器和異常處理SpringGCCloudZuul路由過濾器
- HBase 過濾器使用總結過濾器
- 【SSO】--單點登入之過濾器(filter)過濾器Filter
- HBase學習
- Hbase計數器異常Attempted to increment field that isnREM
- HBase學習之一: 建立hive和hbase關聯表Hive
- 好程式設計師大資料培訓分享HBase協處理器載入的三種方式程式設計師大資料
- HBase學習之Hbase的邏輯結構和物理結構
- 攔截器(Interceptor)與過濾器(Filter)過濾器Filter
- Solon 的過濾器 Filter 和兩種攔截器 Handler、 Interceptor過濾器Filter
- 布隆過濾器(Bloom Filter)過濾器OOMFilter
- 布隆過濾器 Bloom Filter過濾器OOMFilter
- Bloom Filter 布隆過濾器OOMFilter過濾器
- angular內建過濾器-filterAngular過濾器Filter
- SpringBoot+Shiro學習(七):Filter過濾器管理Spring BootFilter過濾器
- hbase權威指南閱讀隨手筆記二之過濾器筆記過濾器
- vue入門 vue基礎之簡單使用4--過濾器(Filter)Vue過濾器Filter
- Java 中的 Filter 過濾器詳解JavaFilter過濾器
- OGG 行過濾filter 引數Filter