在我们最新的 CDH 集群升级中,我们遇到了许多已弃用的方法和类。
一个这样的例子是我用来从我们的 Hbase 表记录中获取 epochTimestamp 的方法 raw(),如下所示:
String epochTimestamp = String.valueOf(values.raw()[0].getTimestamp());
我的 PM 要求我删除所有此类已弃用的功能,并将其替换为最新功能。
来自 https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Result.html我发现 listCells 相当于 raw(),但是谁能帮助我了解如何使用 listCells 从 HBase 记录中获取 epochTimestamp?
最佳答案
替代
raw()
可以迭代:
result.listCells()
这会为您提供一个单元格,然后要获取值,请使用:
CellUtil.cloneValue(cell)
查看文档:
https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/CellUtil.html
示例:
for (Cell cell : result.listCells()) {
String row = new String(CellUtil.cloneRow(cell));
String family = new String(CellUtil.cloneFamily(cell));
String column = new String(CellUtil.cloneQualifier(cell));
String value = new String(CellUtil.cloneValue(cell));
long timestamp = cell.getTimestamp();
System.out.printf("%-20s column=%s:%s, timestamp=%s,
value=%s\n", row, family, column, timestamp, value);
}
关于java - Result 类型的方法 raw() 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30495726/