即使max versions = 1,HBase get也会返回旧值

时间:2013-12-06 13:57:54

标签: hadoop hbase

我希望找到尚未更新超过特定时间段的列。

所以我想用时间范围对列进行扫描。 HBase的正常行为是你获得该时间范围内的最新值(这不是我想要的)。

据我所知,HBase的工作方式是,如果将列族中值的最大版本数设置为“1”,则应仅保留放入单元格的最后一个值。

我发现的不同。

如果我在hbase shell中执行以下命令

create 't1', {NAME => 'c1', VERSIONS => 1}
put 't1', 'r1', 'c1', 'One', 1000
put 't1', 'r1', 'c1', 'Two', 2000
put 't1', 'r1', 'c1', 'Three', 3000
get 't1', 'r1'
get 't1', 'r1' , {TIMERANGE => [0,1500]}

结果如下:

get 't1', 'r1'
COLUMN                     CELL
 c1:                       timestamp=3000, value=Three
1 row(s) in 0.0780 seconds

get 't1', 'r1' , {TIMERANGE => [0,1500]}
COLUMN                     CELL
 c1:                       timestamp=1000, value=One
1 row(s) in 0.1390 seconds

为什么第二个查询返回一个值,尽管我已将最大版本设置为1?

我目前安装的HBase版本是HBase 0.94.6-cdh4.4.0

1 个答案:

答案 0 :(得分:0)

事实证明这是hbase中的一个错误。 https://issues.apache.org/jira/browse/HBASE-10102