欢迎投稿

今日深度:

Hbase读操作,

Hbase读操作,


Hbase读操作

1、性能优化

在进行读数据时为了提高效率可以设置一次获取多少行,多少列,默认是一行一列。

通过

setCatch设置一次读取多少行

setBatch(batch);获取多少列

假设一个表中有5行 10列,默认情况下是每次读取只会拿到一行一列,所以在进行读取5行5列的数据时会进行多次RPC调用。

如果我们设置了批量获取行数和列数会减少RPC的调用次数,setCatch(5) setBatch(5) 则只会进行2两次RPC调用。

2、获取全部版本

在Hbase中通过get或者scan的方式只能是获取最新的版本,如果要获取所有的版本需要设置获取的版本大小即:

sc.setMaxVersions();或者开始sc.setMaxVersions(4)

假设一个数据表里面有5个版本,那么使用不带参数的方式设置的话会获取所有的版本数据,带有参数方式  设置了如果为4则会获取最新的4个版本。

在为scan或者是get设置好获取版本的信息后,读取所有版本的方式有两个:

List<KeyValue> li=result.list();
       for(KeyValue kv : li){
            System.out.println("--row:"+Bytes.toString(kv.getRow())+"--FamileL:"+Bytes.toString(kv.getFamily())+"--Qu:"+Bytes.toString(kv.getQualifier())+"--vALUE:"+Bytes.toString(kv.getValue()));
     }

或者是:

List<KeyValue> li =rs.getColumn("fml".getBytes(), "contest".getBytes());//在所有行中只获取该列
				for(KeyValue kv:li){
					System.out.println(new String(kv.getKeyString())+"--->"+new String(kv.getValue()));
					System.out.println(new String(kv.getFamily())+"--->"+new String(kv.getQualifier()));
				}

通过rs.size() 或者是rs.rawCells().length可以获取该cell中有几个版本。

3、获取列的信息

在Hbase读取时,获取列的信息数据需要先拿到Result:

rs.rawCells() //获取各个列集合

new String(CellUtil.cloneQualifier(c))//获取某列的列名

new String(CellUtil.cloneValue(c))//某列的数据值










www.htsjk.Com true http://www.htsjk.com/hbase/41256.html NewsArticle Hbase读操作, Hbase读操作 1、性能优化 在进行读数据时为了提高效率可以设置一次获取多少行,多少列,默认是一行一列。 通过 setCatch设置一次读取多少行 setBatch(batch);获取多少列 假设...
相关文章
    暂无相关文章
评论暂时关闭