這行程式碼背後運作是使用當前java類別路徑,加載hbase-default.xml,hbase-site.xml組態檔。
HBase可以對每個columnfamily儲存多個版本,每個版本用timestamp,並用降冪順序來儲存他們。timestamp型態是long,單位是毫秒,紀錄的時間是從1970年1月1日開始到今天的時間。
所以必須確保server擁有正確的時間且彼此是同步的
當有資料匯入Hbase,若不在Client端指定時間,則會以server時間為準。
例子:
先匯入rowkey為rk1, columnfamily1為cf1的一筆資料
put 'usertable','rk1','cf1','vlaue1'
0 row(s) in 0.2300 seconds
再匯入同樣columnfamily與rowkey的資料,value不一樣
put 'usertable','rk1','cf1','ddddd'
0 row(s) in 0.0100 seconds
打上scan table只會列出最新版本的資料
scan 'usertable'ROW COLUMN+CELL
rk1 column=cf1:, timestamp=1381154563122, value=ddddd
1 row(s) in 0.0260 seconds
指定列出版本數就會列出過去曾經匯入的紀錄
scan 'usertable',{VERSIONS => 3}
ROW COLUMN+CELL
rk1 column=cf1:, timestamp=1381154563122, value=ddddd
rk1 column=cf1:, timestamp=1381154533794, value=vlaue1
1 row(s) in 0.0220 seconds
scan 'usertable',{VERSIONS => 2}
ROW COLUMN+CELL
rk1 column=cf1:, timestamp=1381154563122, value=ddddd
rk1 column=cf1:, timestamp=1381154533794, value=vlaue1
1 row(s) in 0.0230 seconds
KeyValue類別是很重要的API
Hbase Client很常用
用來包裝"資料"以及"特定儲存單元的位置",位置可以是rowkey,column family名稱,column qualifier以及timestamp,KeyValue提供大量constructor供各位使用。長相大致這樣:KeyValue(byte[] row,int offset,int rowlength);
在Hbase0.97板之後KeyValue改名為Cell
KeyValue提供大量implement Comparator的內部class。
KeyValue裡面的method可以用來比較部分已儲存的資料以及確定其類型....and so on.
沒有留言:
張貼留言