我的hbase实例中有以下场景
hbase(main):002:0> create 'test', 'cf'
0 row(s) in 1.4690 seconds
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.1480 seconds
hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0070 seconds
hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0120 seconds
hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value4'
0 row(s) in 0.0070 seconds
现在,如果您将看到,最后两个插入是针对相同的列族、相同的列和相同的键。但是,如果我正确理解 hbase,cf:c+row3 代表一个单元格,该单元格将具有插入值的所有时间戳版本。
但是简单的扫描只返回最近的值
hbase(main):010:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1317945279379, value=value1
row2 column=cf:b, timestamp=1317945285731, value=value2
row3 column=cf:c, timestamp=1317945301466, value=value4
3 row(s) in 0.0250 seconds
如何获取一个单元格的所有带时间戳的值,或者如何执行基于时间范围的查询?
最佳答案
为了查看列的版本,您需要提供版本计数。
scan 'test', {VERSIONS => 3}
如果可用,将为您提供 2 个版本的列。你也可以在 get 中使用它:
get 'test', 'row3', {COLUMN => 'cf:c', VERSIONS => 3}
要获取特定时间的值,您也可以使用 TIMESTAMP。
get 'test', 'row3', {COLUMN => 'cf:c', TIMESTAMP => 1317945301466}
如果您需要获取“介于”2 个时间戳之间的值,您应该使用 TimestampsFilter .
关于hadoop - HBase 获取单元格的所有时间戳值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7681933/