类型结果中的方法raw()已弃用

o2g1uqev  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(347)

在cdh集群的最新升级中,我们遇到了许多方法和类,这些方法和类已被弃用。
其中一个例子是raw()方法,我使用该方法从hbase表记录中获取epochtimestamp,如下所示: String epochTimestamp = String.valueOf(values.raw()[0].getTimestamp()); 我的首相已经要求我摆脱所有这些弃用的功能,并取代相同的最新版本。
从https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/result.html 我发现listcells相当于raw(),但是有人能帮助我如何使用listcells从hbase记录中获取epochtimestamp吗?

iq0todco

iq0todco1#

根据文件:
公共列表listcells()
在此结果中创建单元格的排序列表。由于hbase 0.20.5,这相当于raw()。
因此,您的代码应该如下所示:

String epochTimestamp = String.valueOf(values.listCells().get(0).getTimestamp());
mzmfm0qo

mzmfm0qo2#

替代品

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);
}
xfb7svmp

xfb7svmp3#

要获取所有列和值,可以使用cellutil,如下所示:

List<Cell> cells = listCells();

    Map<String, String> result = new HashMap<>();

    for (Cell c : cells) {

        result.put(Bytes.toString(CellUtil.cloneQualifier(c)),Bytes.toString(CellUtil.cloneValue(c)));

    }

相关问题