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

发布时间 2023-09-20 22:34:58作者: 201812

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("---");
            }
}

其中我一开始并不知道为什么要用  new String() 来转换获取到的 CellUtil.cloneQualifier(cell) 的数据(这里是获取cell中的列名)

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

然后我换成new String( CellUtil.cloneQualifier(cell) ) 才把我想要得到的列名获取出来。

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

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