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

mbzjlibv  于 2021-05-30  发布在  Hadoop
关注(0)|答案(0)|浏览(266)

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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题