我有一个HBase表有2个版本。我如何get
特定版本的行?
create 'mytable', {NAME=>'cf1',VERSIONS=>2}
put 'mytable', 'row1', 'cf1:lang','english', {VERSIONS=>1} //version 1 value
put 'mytable', 'row1', 'cf1:lang', 'spanish', {VERSIONS=>2} //version 2 value
get 'mytable','row1' //gets the latest version
COLUMN CELL
cf1:lang timestamp=1521884601517, value=spanish
现在我想得到值为english
的行,所以我做
get 'mytable','row1',{COLUMN=>'cf1',VERSIONS=>1} //I expect 'english'
COLUMN CELL
cf1:lang timestamp=1521884601517, value=spanish
可能我在HBase中误解了版本。有什么输入吗?
答案 0 :(得分:1)
创建时,VERSIONS=>2
表示该行仍为2个版本的数据
get时,VERSIONS=>1
表示最新的1个数据将返回。
获取特定版本,您可以使用explicit version 来实现,您可以参考以下步骤:
hbase(main):062:0> create 'mytable', {NAME=>'cf1',VERSIONS=>2}
0 row(s) in 1.2360 seconds
=> Hbase::Table - mytable
hbase(main):063:0> put 'mytable', 'row1', 'cf1:lang', 'english', 1521900360000
0 row(s) in 0.0160 seconds
hbase(main):064:0> put 'mytable', 'row1', 'cf1:lang', 'spanish', 1521900370000
0 row(s) in 0.0030 seconds
hbase(main):065:0> get 'mytable','row1',{COLUMN=>'cf1',TIMESTAMP => 1521900360000}
COLUMN CELL
cf1:lang timestamp=1521900360000, value=english
1 row(s) in 0.0030 seconds