溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行HBASE中TIMERANGE和VERSION的使用

發(fā)布時間:2021-11-10 18:04:18 來源:億速云 閱讀:661 作者:柒染 欄目:云計算

這期內容當中小編將會給大家?guī)碛嘘P如何進行HBASE中TIMERANGE和VERSION的使用 ,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

HBase建表中,默認指定的是一個版本(建表時默認的VERSION是1),若要保留多個版本信息,需在創(chuàng)建表時,就要指定版本數(shù)。

eg.create 'scores',{NAME=>'course',VERSIONS=>2}

首先,先創(chuàng)建一張表,然后添加兩條記錄
hbase(main):079:0> create 'scores',{NAME=>'course',VERSIONS=>2}
0 row(s) in 0.9590 seconds
 hbase(main):080:0> put 'scores','Tom','course:math','97'

0 row(s) in 0.0100 seconds

hbase(main):081:0> scan 'scores'
ROW COLUMN+CELL 
Tom column=course:math, timestamp=1394097631387, value=97 

1 row(s) in 0.0190 seconds

hbase(main):082:0> put 'scores','Tom','course:math','100'

0 row(s) in 0.0080 seconds
hbase(main):026:0> scan 'scores'
ROW COLUMN+CELL 
Tom column=course:math, timestamp=1394097651029, value=100 

1 row(s) in 0.0110 seconds

hbase(main):027:0> scan 'scores',{TIMERANGE=>[1394097631387,1394097651029]}
ROW COLUMN+CELL 
Tom column=course:math, timestamp=1394097631387, value=97 
1 row(s) in 0.0210 seconds
hbase(main):028:0> scan 'scores',{TIMERANGE=>[1394097631387,1394097651030]}
ROW COLUMN+CELL 
Tom column=course:math, timestamp=1394097651029, value=100 
1 row(s) in 0.0100 seconds
從上面可以看到,HBASE默認scan出來的結果是最后一條時間戳的記錄,那么如何把這兩條都scan出來呢,
這時候可以加入VERSIONS這個約束條件:
hbase(main):032:0> scan 'scores',{VERSIONS=>2}
ROW COLUMN+CELL 
Tom column=course:math, timestamp=1394097651029, value=100 
Tom column=course:math, timestamp=1394097631387, value=97 
1 row(s) in 0.0130 seconds
 上面的命令,已經把這條記錄都scan出來了。
再看下面的例子:
scan 'scores',{TIMERANGE=>[1394097631386,1394097651029],VERSIONS=>2}
ROW COLUMN+CELL 
 Tom column=course:math, timestamp=1394097631387, value=97 
1 row(s) in 0.0130 seconds
 從上面的結果只scan出一條記錄??芍琓IMERANGE表示的是”>=開始時間 and <結束時間“的【左閉右開】。再看:
hbase(main):003:0> scan 'scores',{TIMERANGE=>[1394097631386,1394097651030],VERSIONS=>2}
ROW COLUMN+CELL 
 Tom column=course:math, timestamp=1394097651029, value=100 
 Tom column=course:math, timestamp=1394097631387, value=97 
1 row(s) in 0.0100 seconds
 OK,這樣就明白了。
 不過上面的加了VERSIONS=>2,就可以查到歷史的數(shù)據(jù)了,但是必須再創(chuàng)建表的時候加上VERSIONS,否則無效,看下面的例子:
hbase(main):082:0> create 'member','address','info'
0 row(s) in 0.4140 seconds
=> Hbase::Table - member
hbase(main):093:0> put 'member','wanglei','info:age','24'
0 row(s) in 0.0730 seconds
hbase(main):093:1>get 'member','wanglei',{COLUMN=>'info:age'}
COLUMN         CELL 
 info:age timestamp=1394438746187, value=24
hbase(main):093:7> put 'member','wanglei','info:age','99'
0 row(s) in 0.0730 seconds
hbase(main):093:18> get 'member','wanglei',{COLUMN=>'info:age'}
COLUMN                             CELL
info:age                          timestamp=1394439539837, value=100 
hbase(main):022:0> get 'member','wanglei',{COLUMN=>'info:age',TIMERANGE=>[1394438746187,1394439539838],VERSIONS=>2}
COLUMN CELL 
 info:age imestamp=1394439539837, value=100 
1 row(s) in 0.0050 seconds
 可以看到,雖然加了VERSIONS,但get的結果是1條;這就是因為建表時默認的VERSION是1.
修改VERSIONS:
hbase(main):029:0> alter 'member',{NAME=>'info','VERSIONS'=>2}
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.1680 seconds
hbase(main):046:0> put 'member','wanglei','info:age','101'
0 row(s) in 0.0590 seconds
hbase(main):047:0> get 'member','wanglei',{COLUMN=>'info:age'}
COLUMN CELL 
 info:age timestamp=1394441161595, value=101 
1 row(s) in 0.0120 seconds
   那么現(xiàn)在就可以把倆條記錄get出來了,如下:
hbase(main):049:0> get 'member','wanglei',{COLUMN=>'info:age',TIMERANGE=>[1394439539837,1394441161596],VERSIONS=>2}或get 'member','wanglei',{COLUMN=>'info:age',VERSIONS=>2}
COLUMN CELL 
 info:age timestamp=1394441161595, value=101 
 info:age timestamp=1394439539837, value=100 
2 row(s) in 0.0080 seconds

上述就是小編為大家分享的如何進行HBASE中TIMERANGE和VERSION的使用 了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI