java Hbase 批量读取

Hbase 一般使用传一个rowkey读取一个数据的方式进行数据的读取,然后将多个rowkey写成一个循环,这样性能不好。可以传一批rowkey然后,一块获取返回数据的方式进行查询。

java 版本: 1.8
hbase-client版本: 1.3

使用get[rowKeyList]代码如下:

private List<HbaseCell> queryHbaseBatch(List<String> rowList, String tableName) throws IOException{
        List<Get> getList =  new ArrayList<>();
        Table table = this.getConnection().getTable(TableName.valueOf(tableName));
        List<HbaseCell> resList = new ArrayList<>();
        rowList.forEach(rowKey ->{
            Get get =  new Get(Bytes.toBytes(rowKey));
            getList.add(get);
        });
        Result[] results = table.get(getList);
        Arrays.stream(results).forEach(result -> {
            Arrays.stream(result.rawCells()).forEach(cell -> {
                String value = Bytes.toString(CellUtil.cloneValue(cell));
                String qualifier = Bytes.toString(CellUtil.cloneQualifier(cell));
                String family = Bytes.toString(CellUtil.cloneFamily(cell));
                String rowKey = Bytes.toString(CellUtil.cloneRow(cell));
                resList.add(new HbaseCell(rowKey, family, qualifier, value, StringHelper.getTimeFromRowKey(rowKey)));
            });
        });
        close(this.getConnection(),table);
        return resList;
    }
    原文作者:Moon_Storm
    原文地址: https://www.jianshu.com/p/827c7f669502
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞