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 把數(shù)據當成字符串宙拉,用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;
}