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);