hbase 新版本之後,java api 改動比較大,很多方法都已經過時,其中在作全表遍歷時,方法改動較大
網上多數都是基於舊api的遍歷方法。
新api 示例如下
/**
* 遍歷所有數據
*/
public void queryAll() {
try {
Table table = conn.getTable(tableName);
ResultScanner scan = table.getScanner(new Scan());
for (Result rst : scan) {
String rowKey = Bytes.toString(rst.getRow());
// family qualifiers values
NavigableMap<byte[], NavigableMap<byte[],byte[]>> familyMap = rst.getNoVersionMap();
for(byte[] fByte : familyMap.keySet()){
NavigableMap<byte[],byte[]> quaMap = familyMap.get(fByte);
String familyName = Bytes.toString(fByte);
for(byte[] quaByte : quaMap.keySet()){
byte[] valueByte = quaMap.get(quaByte);
String quaName = Bytes.toString(quaByte);
String value = Bytes.toString(valueByte);
String result = String.format("rowKey : %s | family : %s | qualifiers : %s | value : %s", rowKey, familyName, quaName, value);
System.out.println(result);
}
}
}
scan.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}