Hbase API 查询(scan)
Hbase API查询非常灵活,除了上一篇通过Get 查询。
还可以通过Scan 查询。scan 查询非常的丰富场景,下面一一介绍
- 根据行键的前缀进行查询
Scan scan = new Scan();
PrefixFilter filter1 = new PrefixFilter("rowkey8".getBytes());
scan.setFilter(filter1);
ResultScanner scanner = htable.getScanner(scan);
print(scanner);
- 根据startrow 及stopRow
Scan scan = new Scan();
scan.setStartRow("rowkey90".getBytes());
scan.setStopRow("rowkey95".getBytes());
ResultScanner scanner = htable.getScanner(scan);
print(scanner);
- 分页查询
Scan scan = new Scan();
PageFilter pageFilter =new PageFilter(10);
scan.setFilter(pageFilter);
scan.setStartRow("rowkey65".getBytes());
ResultScanner scanner = htable.getScanner(scan);
print(scanner);
- 筛选family:qualifier对应的value
Scan scan = new Scan();
SingleColumnValueFilter filter =
new SingleColumnValueFilter("cf".getBytes(),
"name".getBytes(),
CompareOp.EQUAL, "name 50".getBytes());
scan.setFilter(filter);
ResultScanner scanner = htable.getScanner(scan);
print(scanner);
- 对行键进行过滤的, 也可以通过它来筛选出行键中包含指定字符串的一系列行
RowFilter 提供多个比较器
Scan scan = new Scan();
RowFilter filter =
new RowFilter(CompareFilter.CompareOp.EQUAL,
new SubstringComparator("rowkey7"));
// rowkey regex match
RowFilter filter2 =
new RowFilter(CompareFilter.CompareOp.EQUAL,
new RegexStringComparator("^ro.*8.*$"));
scan.setFilter(filter2);
ResultScanner scanner = htable.getScanner(scan);
print(scanner);