我刚刚开始使用hbase,也不是一个熟练的java程序员。我创建了一个调试程序来测试当前的hbase程序,该程序可以放置和获取记录,还可以作为重复数据消除机制。调试程序检查hbase表中是否存在某些应该使用其他程序插入的id。当我执行get时,大部分记录都在那里,但有些记录将返回null(找不到)。当我从hbase shell手动检查并请求相同的id时,它返回带有时间戳的行。有什么我不明白的吗?hbase中是否保存了多个版本的记录?我假设hbase根据提供的id做了唯一的记录。
// code to get record
public static byte[] getPreHbase(String provid, String commentId) throws IOException {
provid = "98";
commentId = commentId.trim();
String rec = provid + "." + commentId;
byte [] value= "test".getBytes();
try{
Get g = new Get(Bytes.toBytes(rec));
Result r = htableII.get(g);
value = r.getValue(Bytes.toBytes("cmmnttest"),Bytes.toBytes("cmmntposts"));
String valueStr = Bytes.toString(value);
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return value;
正如我所提到的,这只是有时对于一些id,而其他id是返回的。这是手动调用shell
get 'hb_test', '98.1010000000003_1asdfghjkl'
COLUMN CELL
cmmnttest:cmmntposts timestamp=1420659812914,
value= 1010000000003_1asdfghjkl
1 row(s) in 0.0140 seconds
暂无答案!
目前还没有任何答案,快来回答吧!