上下文:要在Hbase协处理器中执行的代码;
我正在尝试实现一种RowCount,就像在官方示例中一样,但不是简单地计算行,而是想在“行的键”上创建一些统计信息。
当前的实现是这样的: 问题是这个解决方案太慢。
Scan scan = new Scan();
scan.setFilter(new KeyOnlyFilter());
HRegionInfo region = this.env.getRegionInfo();
scan.setStartRow(region.getStartKey());
scan.setStopRow(region.getEndKey());
scanner = myTable.getScanner(scan);
for (Result r : scanner) {
String row_key = new String(tmp.getRow());
// process row_key ..
}
我想知道是否可以从InternalScanner获取“行ID”,如果可以,怎么样?
还要知道在InternalScanner上迭代是否更快, 而不是在ResultScanner上。
答案 0 :(得分:1)
是的,可能, 是的,它更快, 这是如何:
scanner.nextRaw(values))
Cell c = values.get(0);
String key = new String(c.getRowArray(), c.getRowOffset(), c.getRowLength());
请注意,如果您使用while(scanner.nextRaw(values))
进行迭代,则网络单元格将附加到值列表中(列表不会被清除)。