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();
}
}