總網頁瀏覽量

2013年10月7日 星期一

hbase program雜記&KeyValue類別

Configuration conf =HBaseConfiguration.create();
這行程式碼背後運作是使用當前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.





沒有留言:

張貼留言