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

Hadoop HBase get返回旧值,即使max versions=1,hadoop,hbase,Hadoop,Hbase,我希望找到超过特定时间段未更新的列 所以我想对具有时间范围的列进行扫描。 HBase的正常行为是,您随后获得该时间范围内的最新值(这不是我想要的) 据我所知,HBase的工作方式是,如果将列族中的值的最大版本数设置为“1”,则应仅保留放入单元格的最后一个值 我发现的是不同的 如果我在hbase shell中执行以下命令 create 't1', {NAME => 'c1', VERSIONS => 1} put 't1', 'r1', 'c1', 'One', 1000 put 't

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

所以我想对具有时间范围的列进行扫描。 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
为什么第二个查询返回一个值,即使我将max versions设置为1


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

它原来是HBase中的一个bug。

请注意,该缺陷以“无法修复”结束。是的,修复此效果会产生太多不良副作用。