2015-06-25 45 views
0

上下文:要在Hbase協處理器中執行的代碼;InternalScanner等效於Result.getRow()

我試圖實現一種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

是的,它是可能的, 是它的速度更快, 這是怎麼了:

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

請注意,如果您正在使用while(scanner.nextRaw(values))迭代淨細胞將被附加到值列表(該列表將不會被清零)。