有没有办法扫描HBase表,例如前100个结果,然后获得下一个100等等......就像在SQL中我们使用LIMIT和OFFSET一样?我的行键是uuid
您可以通过多种方式做到这一点。最简单的一种是页面过滤器。下面是来自HBase的代码示例:权威指南,第 150 页。
私有静态最终字节[] POSTFIX = 新字节[] { 0x00 }; 过滤器 filter = new PageFilter(15); int totalRows = 0; byte[] lastRow = null; 而(真){ 扫描 scan = new Scan(); scan.setFilter(filter); 如果(最后一行!= null){ byte[] startRow = Bytes.add(lastRow, POSTFIX); System.out.println("起始行:" + Bytes.toStringBinary(startRow)); scan.setStartRow(startRow); }? ResultScanner 扫描仪 = table.getScanner(scan); int localRows = 0; ? 结果结果; ? while ((result = scanr.next()) != null) { System.out.println(localRows++ + ": " + result); totalRows++;? lastRow = result.getRow(); }? 扫描仪.close();? 如果(localRows == 0)中断; } ?System.out.println("总行数:" + totalRows);
或者,您可以设置扫描时捕获所需的限制,然后将起始行更改为每次获取的上次扫描的最后一行 + 1。
归档时间: |
|
查看次数: |
4673 次 |
最近记录: |