Hbase中ResultScanner获取到查询到的对象Arrays.toString(CellUtil.cloneQualifier(cell))、new String(CellUtil.cloneQualifier(cell)) 、Bytes.toString(CellUtil.cloneQualifier(cell))

java编写扫描hbase表操作的时候返回的对象ResultScanner

可以理解为result记录一行数据,cell数据,Resultscanner记录多行数据,result数组

我对这些还都不太理解,不知道是个什么样子的结构。

for (Result result : scanner) {

                Cell[] cells = result.rawCells();

                for (Cell cell : cells) {

                    System.out.println(new String(CellUtil.cloneQualifier(cell)));


                }
                System.out.println("---");
            }
}

我一开始写的是 Arrays.toString(CellUtil.cloneQualifier(cell)) 结果发现查询到的数据并不是我想要的,输出的是类似于 [177,299,872] 这样子的数据

然后我换成new String( CellUtil.cloneQualifier(cell) ) 获取出来了一些奇奇怪怪的中文,

最后换成Bytes.toString(CellUtil.cloneQualifier(cell))才能显示出我我想要的结果

我对这部分的理解还是不够清楚。

我的理解是:这里的cell是一个下面的一行数据,CellUtil中提供的clonexxxx的方法可以获取对应的rowkey、columnFamily、columnName(cloneQualifier)、还有value值,而这个result是不同的rowkey化为一个result,scanner是获取到整个表的数据,由不同的rowkey组成,一个rowkey可以对应多组列。

 

posted on 2023-09-20 22:30  201812  阅读(105)  评论(0编辑  收藏  举报