Result.getRow()的InternalScanner等效项

时间:2015-06-25 11:30:45

标签: hbase

上下文:要在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上。

1 个答案:

答案 0 :(得分:1)

是的,可能, 是的,它更快, 这是如何:

scanner.nextRaw(values)) 
Cell c = values.get(0);
String key = new String(c.getRowArray(), c.getRowOffset(), c.getRowLength());

请注意,如果您使用while(scanner.nextRaw(values))进行迭代,则网络单元格将附加到值列表中(列表不会被清除)。