`
刘小小尘
  • 浏览: 66052 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

FirstKeyOnlyFilter的使用方法及实例

阅读更多

 

 

FirstKeyOnlyFilter :api中解释如下:

A filter that will only return the first KV from each row.

This filter can be used to more efficiently perform row count operations.

说的明明白白,只会取得每条数据的第一个kv,可以用于count,计算总数,速度很快

代码如下:

希望批评指正

 

public int getCount() {
		long bef = System.currentTimeMillis();
		int i = 0;                                                                                                                          HTable tableKeyword = new HTable(conf,"tableName");                                                                                 tableKeyword.setScannerCaching(500);
		ResultScanner rs = null;
		try {
			Scan s = new Scan();
			s.setCaching(500);
			s.setCacheBlocks(false);
			s.setFilter(new FirstKeyOnlyFilter());
			rs = tableKeyword.getScanner(s);
		} catch (IOException e) {
			log.warn(e);
			e.printStackTrace();
		}
		for (org.apache.hadoop.hbase.client.Result r : rs) {
			i++ ;
		}
		long now = System.currentTimeMillis();
		log.warn("keyword表中数据总数 :" + i + ", 所用时间 : " + (now - bef)/1000.0);
		rs.close();
		return i;
	}

 

最好设置tableKeyword.setScannerCaching(500);

s.setCaching(500);
s.setCacheBlocks(false);
这三个参数,否则速度会降下来很多

总的来说,可以节省很多时间

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics