带偏移量的hbase扫描

zengzsys  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(365)

有没有一种方法可以扫描一个hbase表,例如,得到前100个结果,然后再得到下100个结果,依此类推。。。就像在sql中,我们用limit和offset做的那样?我的行键是uuid

nukf8bse

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。

相关问题