我的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
Run Code Online (Sandbox Code Playgroud)
现在,如果您将看到,最后两个插入是针对相同的列族,相同的列和相同的键.但是,如果我正确理解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
Run Code Online (Sandbox Code Playgroud)
如何获取单元格的所有带时间戳值,或如何执行基于时间范围的查询?
fra*_*ail 25
要查看列的版本,您需要提供版本计数.
scan 'test', {VERSIONS => 3}
Run Code Online (Sandbox Code Playgroud)
如果可用,将为您提供2个版本的列.你可以用它来获取:
get 'test', 'row3', {COLUMN => 'cf:c', VERSIONS => 3}
Run Code Online (Sandbox Code Playgroud)
为了获得特定时间的价值,你可以使用TIMESTAMP.
get 'test', 'row3', {COLUMN => 'cf:c', TIMESTAMP => 1317945301466}
Run Code Online (Sandbox Code Playgroud)
如果您需要获取"两个"时间戳之间的值,则应使用TimestampsFilter.
| 归档时间: |
|
| 查看次数: |
23019 次 |
| 最近记录: |