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