本文主要是介绍Hbase Filter+Scan 查询效率优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Hbase Filter+Scan 查询效率问题
众所周知,Hbase利用filter过滤器查询时候会进行全表扫描,查询效率低下,如果没有二级索引,在项目中很多情况需要利用filter,下面针对这种情况尝试了几种优化的方案,仅供参考,欢迎交流。
根据业务要求,作者需要根据时间范围搜索所需要的数据,所以作者设计的rowKey是以时间戳为起始字符串的。
正确尝试:
1.scan 设置 开始行和结束行
Scan scan = new Scan();scan.setStartRow("startRowKey".getBytes());scan.setStopRow("stopRowKey".getBytes());
结论:查询效率明显提升
2.查询的数量越小越好
总数据量越大,查询越耗时,所以为保证效率,开始行和结束行之间需要遍历的数据总量越少越好。
需要说明的是,在filter 中RowFilter设置开始行(前缀)和结束行(前缀)
并不能提升查询效率,因为还是全表扫描。
FilterList filters = new FilterList(FilterList.Operator.MUST_PASS_ALL);//开头大于等于starTm的行Filter starTime = new RowFilter(CompareFilter.CompareOp.GREATER_OR_EQUAL,new BinaryPrefixComparator(DateU
这篇关于Hbase Filter+Scan 查询效率优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!