hbase java代码为get返回null,但hbase shell get comman返回记录

hbase java代码为get返回null,但hbase shell get comman返回记录,java,hadoop,hbase,Java,Hadoop,Hbase,我刚刚开始使用hbase,而且还不是一个熟练的java程序员。我创建了一个调试程序来测试当前的hbase程序,它可以放置和获取记录,也可以作为重复数据消除机制。调试程序检查hbase表中是否存在某些应使用其他程序插入的ID。当我执行get时,大部分记录都在那里,但有些记录将返回为null(未找到)。当我从hbase外壳手动检查并请求相同的id时,它返回带有时间戳的行。有什么我不明白的吗?hbase中是否保存了多个版本的记录?我假设hbase根据提供的id创建了唯一的记录 // code to g

我刚刚开始使用hbase,而且还不是一个熟练的java程序员。我创建了一个调试程序来测试当前的hbase程序,它可以放置和获取记录,也可以作为重复数据消除机制。调试程序检查hbase表中是否存在某些应使用其他程序插入的ID。当我执行get时,大部分记录都在那里,但有些记录将返回为null(未找到)。当我从hbase外壳手动检查并请求相同的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