有没有办法扫描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。