1、RowFilter用于过滤row key
Operator Description
LESS 小于
LESS_OR_EQUAL 小于等于
EQUAL 等于
NOT_EQUAL 不等于
GREATER_OR_EQUAL 大于等于
GREATER 大于
NO_OP 排除所有
Comparator Description
BinaryComparator 使用Bytes.compareTo()比较
BinaryPrefixComparator 和BinaryComparator差不多,从前面开始比较
NullComparator Does not compare against an actual value but whether a given one is null,
or not null.
BitComparator Performs a bitwise comparison, providing a BitwiseOp class with OR,
and XOR operators.
RegexStringComparator 正则表达式
SubstringComparator 把数据当成字符串,用contains()来判断
public static List<Property> queryTable(String tableName, String rowKeyReg) {
TableName name = TableName.valueOf(tableName);
try (Table table = CONNECTION.getTable(name)) {
Scan scan = new Scan();
System.out.println("小于等于rowKeyReg的行(rowKeyReg可以为指定的值)");
Filter filter = new RowFilter(CompareFilter.CompareOp.LESS_OR_EQUAL,
new BinaryComparator(rowKeyReg.getBytes()));
scan.setFilter(filter);
ResultScanner scanner = table.getScanner(scan);
for (Result rs : scanner) {
System.out.println(rs);
}
scanner.close();
System.out.println("正则获取结尾为a的行");
Filter filter1 = new RowFilter(CompareFilter.CompareOp.EQUAL,
new RegexStringComparator(".*a));
scan.setFilter(filter1);
ResultScanner scanner1 = table.getScanner(scan);
for (Result rs : scanner1) {
System.out.println(rs);
}
scanner1.close();
System.out.println("包含有b的行");
Filter filter2 = new RowFilter(CompareFilter.CompareOp.EQUAL,
new SubstringComparator("b"));
scan.setFilter(filter2);
ResultScanner scanner2 = table.getScanner(scan);
for (Result rs : scanner2) {
System.out.println(res);
}
scanner2.close();
System.out.println("开头是rowKeyReg 的");
Filter filter3 = new RowFilter(CompareFilter.CompareOp.EQUAL,
new BinaryPrefixComparator(rowKeyReg.getBytes()));
scan.setFilter(filter3);
ResultScanner scanner3 = table.getScanner(scan);
for (Result rs : scanner3) {
System.out.println(rs);
}
scanner3.close();
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,
new BinaryPrefixComparator(("\"" + rowKeyReg + "\"").getBytes()));
scan.setFilter(filter);
ResultScanner scanner4 = table.getScanner(scan);
for (Result res : scanner4) {
Cell[] cells = res.rawCells();
System.out.println(res);
}
} catch (Exception e) {
log.error("query HBase error", e);
}
return null;
}
网友评论