java hbase 批量查询数据_java Hbase 批量读取

本文介绍了如何在Java中优化HBase的数据读取,通过批量查询多个rowkey来提升性能。示例代码展示了使用hbase-client 1.3版本,针对Java 1.8,如何构建并执行批量Get请求,以及解析结果列表的方法。
摘要由CSDN通过智能技术生成

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

java 版本: 1.8

hbase-client版本: 1.3

使用get[rowKeyList]代码如下:

private List queryHbaseBatch(List rowList, String tableName) throws IOException{

List getList = new ArrayList<>();

Table table = this.getConnection().getTable(TableName.valueOf(tableName));

List 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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值