有没有一种方法可以扫描一个hbase表,例如,得到前100个结果,然后再得到下100个结果,依此类推。。。就像在sql中,我们用limit和offset做的那样?我的行键是uuid
nukf8bse1#
你可以用多种方法。最简单的是页面过滤器。下面是hbase的代码示例:权威指南,第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。
1条答案
按热度按时间nukf8bse1#
你可以用多种方法。最简单的是页面过滤器。下面是hbase的代码示例:权威指南,第150页。
或者,您可以在扫描时设置所需的限制,然后将开始行从上一次扫描更改为最后一行+1。