您好,登錄后才能下訂單哦!
在HBase中 一個row對應的相同的列只會有一行。使用scan 或get 得到都是最新的數據
如果我們對這某一row所對應的列進行了更改操作后,并不會多生成一條數據,不會像RDBMS一樣
insert時多生成一條記錄,在HBase中對同一條數據的修改或插入 都只是put操作,最終看到的都是
最新的數據,其它的數據在不同的version中保存,就像隱藏的東西一樣
那么如何才能看到這些隱藏version的值呢
Get get = new Get(startRow);
get.setMaxVersions();
Result result = table.get(get);
List<KeyValue> list = result.list();
for(final KeyValue v:list){
logger.info("value: "+ v+ " str: "+Bytes.toString(v.getValue()));
}
加入setMaxVersions()方法就可以把所有的版本都取出來了
實例代碼:
@Test public void test4() throws Exception { Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "hadoop1,hadoop2,hadoop3"); HTable hTable = new HTable(config, "t_xuanxuan"); Get get = new Get("29129101029_1444038378601".getBytes()); get.setMaxVersions(); //這里設置的是2 Result result = hTable.get(get); System.out.println(result.size()); List<KeyValue> list = result.list(); for(final KeyValue v:list){ System.out.println("value: "+ v+ " str: "+Bytes.toString(v.getValue())); } }
result的個數會是2,因為把其隱藏起來了,所以在hbase命令行中也查詢不到,只有這樣查。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。