Hbase API 查詢(scan)
阿新 • • 發佈:2019-01-10
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);