有没有办法扫描HBase表,例如前100个 结果,然后获得下一个100等等......就像在SQL中一样 有LIMIT和OFFSET? 我的行键是uuid
答案 0 :(得分:4)
你可以采取多种方式。最简单的是页面过滤器。以下是 HBase: The Definitive Guide 的代码示例,第150页。
private static final byte[] POSTFIX = new byte[] { 0x00 }; Filter filter = new PageFilter(15); int totalRows = 0; byte[] lastRow = null; while (true) { Scan scan = new Scan(); scan.setFilter(filter); if (lastRow != null) { byte[] startRow = Bytes.add(lastRow, POSTFIX); System.out.println("start row: " + Bytes.toStringBinary(startRow)); scan.setStartRow(startRow); } ResultScanner scanner = table.getScanner(scan); int localRows = 0; Result result; while ((result = scanner.next()) != null) { System.out.println(localRows++ + ": " + result); totalRows++; lastRow = result.getRow(); } scanner.close(); if (localRows == 0) break; } System.out.println("total rows: " + totalRows);
或者您可以设置扫描捕获所需的限制,然后将每个获取的起始行更改为上一行+上一行+ 1。