一、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()来判断 |
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop