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

时间:2015-01-08 14:59:20

标签: java hadoop hbase

我刚刚开始使用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

0 个答案:

没有答案