我刚刚开始使用hbase,也不是一个熟练的java程序员。我创建了一个调试程序来测试当前的hbase程序。获取记录并作为重复数据删除机制。调试程序检查hbase表中是否存在某些ID,这些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,而其他人则被退回。这是shell中的手动调用
get 'hb_test', '98.1010000000003_1asdfghjkl'
COLUMN CELL
cmmnttest:cmmntposts timestamp=1420659812914,
value= 1010000000003_1asdfghjkl
1 row(s) in 0.0140 seconds