【发布时间】:2011-11-30 05:58:00
【问题描述】:
使用 Hbase API (Get/Put) 或 HBQL API,是否可以检索特定列的时间戳?
【问题讨论】:
使用 Hbase API (Get/Put) 或 HBQL API,是否可以检索特定列的时间戳?
【问题讨论】:
【讨论】:
我认为以下会更好:
KeyValue kv = result.getColumnLatest(family, qualifier);
String status = Bytes.toString(kv.getValue());
Long timestamp = kv.getTimestamp();
因为 Result#getValue(family, qualifier) 被实现为
public byte[] getValue(byte[] family, byte[] qualifier) {
KeyValue kv = this.getColumnLatest(family, qualifier);
return kv == null ? null : kv.getValue();
}
【讨论】:
@codingFoo 的回答假定所有单元格的所有时间戳都相同,但 op 的问题是针对特定列的。在这方面,类似于@peibin wang 的回答,如果您想要您的专栏的最后一个时间戳,我会提出以下建议:
在 Result 对象上使用getColumnLatestCell 方法,然后像这样调用getTimestamp 方法:
Result res = ...
res.getColumnLatestCell(Bytes.toBytes("column_family"), Bytes.toBytes("column_qualifier")).getTimestamp();
如果您想访问特定的时间戳,您可以使用getColumnCells,它返回指定列的所有单元格,但是您必须在带有get(int index) 的单元格之间进行选择,然后调用getTimestamp()
【讨论】:
result_foo.rawCells()(0).getTimestamp
风格不错
【讨论】:
rawCells()[0]