我有一个简单的问题。我应该像这样使用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?
非常感谢您的回答
答案 0 :(得分:0)
不推荐使用KeyValue,但其方法如getFamily,getQualifier,getValue等。 在API文档中,您可以看到建议使用CellUtil类方法(对于客户端)和服务器端的Cell接口方法。 这是因为根据HBase文档, KeyValue是HBase的基本类型,建议HBase应用程序和用户使用Cell接口,避免直接使用KeyValue和Cell中未定义的成员函数。
答案 1 :(得分:0)
查看此链接:https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/KeyValue.html
如果在客户端使用,则访问各个字段的主要方法是getRowArray(),getFamilyArray(),getQualifierArray(),getTimestamp()和getValueArray()。这些方法分配新的字节数组并返回副本。避免在服务器端使用它们。