一、HBase查询方式
hbase的查询实现只提供两种方式:
- 按指定rowkey获取唯一一条记录:get方法。
- 按指定条件获取一批记录:scan方法。
实现条件查询功能使用的就是scan方式,scan在使用时有以下几点值的注意:
- scan可以通过setCaching与setBatch方法提高速度(以空间换时间)
- scan可以通过setStartRow与setEndRow来限定范围。范围越小,性能越高。
- scan可以通过setFilter方法添加过滤器,这也是分页(性能差)、多条件查询的基础。
二、RowFilter介绍
operator | description |
less | 小于 |
less_or_equal | 小于等于 |
equal | 等于 |
not_equal | 不等于 |
greater_or_equal | 大于等于 |
greater | 大于 |
no_op | 排除所有 |
Comparator | description |
BinaryComparator | 使用bytes.comparaTo()比较 |
BinaryPrefixComparator | 和BinaryComparator差不多,从前面开始比较 |
NullComparator | |
BitComparator | |
RegexStringComparator | 正则表达式 |
subStringComparator | 把数字当成字符串,用contains()来判断 |
参考:
- Get: http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Get.html#setFilter-org.apache.hadoop.hbase.filter.Filter-
- Scan:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setFilter-org.apache.hadoop.hbase.filter.Filter-
- 扫描参数设置: http://grokbase.com/t/hbase/user/126vtkfr7h/scan-vs-put-vs-get
- 对比:http://student-lp.iteye.com/blog/2309841
- RowKey设计:http://blog.chedushi.com/archives/9720