1. HBase的过滤器如下5种
- RowFilter 基于RowKey的过滤
- FamilyFilte 基于列簇的过滤
- QualifierFilter 基于字段的过滤
- ValueFilter 基于值的过滤
- DependentColumnFilter 参考值过滤
2. HBase的比较运算符
- LESS 匹配小于设定值的值
- LESS_OR_EQUAL 匹配小于或等于设定值的值
- EQUAL 匹配等于设定值的值
- NOT_EQUAL 匹配与设定值不相等的值
- GREATER_OR_EQUAL 匹配大于或等于设定值的值
- GREATER 匹配大于设定值的值
- NO_OP 排除一切值
3. HBase的比较器
- BinaryComparator 使用Bytes.compareTo()比较当前的阀值
- BinaryPrefixComparator 与上面的相似, 使用Bytes.compareTo()进行匹配,但是是从左端开始前缀匹配
- NullComparator 不做匹配,只判断当前值不是null
- BitComparator 通过BitWiseOp类提供的按照 位与(AND),或与(OR)、异或(XOR)操作执行位级比较。
- RegexStringComparator 根据一个正则表达式,在实例化这个比较器的时候去匹配表中的数据。
- SubStringComparator 把阀值和表中数据String实例, 同时通过contains()操作匹配字符串。
4. 示例代码(过滤器、运算符、比较器)
//1. 创建RowFilter过滤器、BinaryComparator比较器、EQUAL比较运算符
RowFilter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL
, new BinaryComparator("rowkey_10".getBytes()));
//2. 创建familyFilter过滤器、BinaryComparator比较器、NO_OP比较运算符
FamilyFilter familyFilter = new FamilyFilter(CompareFilter.CompareOp.NO_OP,
new BinaryComparator("base_Info".getBytes()));
//3. 创建qualifierFilter过滤器、BinaryComparator比较器、EQUAL比较运算符
QualifierFilter qualifierFilter = new QualifierFilter(CompareFilter.CompareOp.EQUAL,
new BinaryComparator("username".getBytes()));
//4. 创建valueFilter过滤器、BinaryComparator比较器、EQUAL比较运算符
ValueFilter valueFilter = new ValueFilter(CompareFilter.CompareOp.EQUAL,
new BinaryComparator("张三".getBytes()));
5. 查询值等于张三的所有数据
@Test
public void tesValueFilter() throws IOException {
//1、创建过滤器
ValueFilter filter = new ValueFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator("张三".getBytes()));
//2、创建扫描器
Scan scan = new Scan();
//3、将过滤器设置到扫描器中
scan.setFilter(filter);
//4、获取HBase的表
Table table = connection.getTable(TableName.valueOf("user"));
//5、扫描HBase的表(注意过滤操作是在服务器进行的,也即是在regionServer进行的)
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) {
// 6.打印数据 获取所有的单元格
List<Cell> cells = result.listCells();
for (Cell cell : cells) {
// 打印rowkey,family,qualifier,value
System.out.println(Bytes.toString(CellUtil.cloneRow(cell))
+ "==> " + Bytes.toString(CellUtil.cloneFamily(cell))
+ "{" + Bytes.toString(CellUtil.cloneQualifier(cell))
+ ":" + Bytes.toString(CellUtil.cloneValue(cell)) + "}");
}
}
}
如果喜欢本文章,请用小手点个赞~