hbase cellutil与keyvalue

csbfibhn  于 2021-06-10  发布在  Hbase
关注(0)|答案(2)|浏览(469)

我有一个简单的问题。我应该这样使用cellutil类:

for (Cell cell : result.rawCells()) {
            byte[] family = CellUtil.cloneFamily(cell);
            byte[] column = CellUtil.cloneQualifier(cell);
            byte[] value = CellUtil.cloneValue(cell);
            System.out.println("\t" + Bytes.toString(family) + ":" + Bytes.toString(column) + " = " + Bytes.toString(value));
        }

或用于访问结果单元格的keyvalue类

for(KeyValue kv : result.list()){
            String family = new String(kv.getFamily());
            System.out.println(family);
            String qualifier = new String(kv.getQualifier());
            System.out.println(qualifier);
            System.out.println(new String(kv.getValue()));

        }

是否不推荐使用keyvalue?
非常感谢你的回答

ugmeyewa

ugmeyewa1#

请参见此链接:https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/keyvalue.html
如果在客户端使用,则访问各个字段的主要方法是getrowarray()、getfamilyarray()、getqualifierarray()、gettimestamp()和getvaluearray()。这些方法分配新的字节数组并返回副本。避免在服务器端使用它们。

fdbelqdn

fdbelqdn2#

keyvalue没有被否决,但是它的方法如getfamily、getqualifier、getvalue等被否决。在api文档中,您可以看到建议使用cellutil类方法(对于客户端)和cell接口方法(对于服务器端)。这是因为根据hbase文档,keyvalue是基本的hbase类型,建议hbase应用程序和用户使用cell接口,避免直接使用cell中未定义的keyvalue和成员函数。

相关问题