hbase之setCaching 和 setBatch 和setMaxResultSize
scan的setBatch()用法
val conf = HBaseConfiguration.create()
val table: Table = ConnectionFactory.createConnection(conf).getTable(TableName.valueOf(Bytes.toBytes("user"))) val scan = new Scan()
scan.addColumn(Bytes.toBytes("info"),Bytes.toBytes("gender"))
scan.setBatch(2) val scanner: ResultScanner = table.getScanner(scan)
var res = scanner.next()
while (res!=null){
println(res.listCells().size())
res = scanner.next()
}
获取hbase连接
获取表的句柄
获取scanner
通过scanner的next的方法获取result,每个result的包含多少cell由Batch决定:
当batch小于列数,则每个result的cell数等于batch
当batch大于列数,则每个result的cell数等于列数
写成公式:
Result 包含的cell数 = Min(每行列数,Batch大小)
Result 的个数 =( row数 * 每行的列数 )/ Min(每行列数,Batch大小)
scan的setCaching()用法
对于一个拥有两个列族,10行,每行在每个列族下10列的 habse表(共计200列),hbase权威指南提供了一个表,如下图所示
由上表可知,batch 决定了返回多少个 result,而Caching(缓存的 result 数)决定了 rpc 的次数.
有些博客说Caching的值代表行数,这种说法是不完全正确的,而且这里的Caching不能无限制的大,因为hbase的每个rpc是有时间限制的,固定的时间如果值读取不完会出现连接异常。
https://blog.csdn.net/lidaxueh_heart/article/details/82763357
https://blog.csdn.net/weixin_37275456/article/details/89847965
hbase之setCaching 和 setBatch 和setMaxResultSize的更多相关文章
- HBase scan setBatch和setCaching的区别
HBase的查询实现只提供两种方式: 1.按指定RowKey获取唯一一条记录,get方法(org.apache.hadoop.hbase.client.Get) 2.按指定的条件获取一批记录,scan ...
- HBase scan setBatch和setCaching的区别【转】
转自:http://blog.csdn.net/caoli98033/article/details/44650497 HBase的查询实现只提供两种方式: 1.按指定RowKey获取唯一一条记录,g ...
- Hbase之缓存扫描加快读取速度
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...
- HBase应用开发回顾与总结系列之二:RowKey行键设计规范
2. RowKey行键设计规范 2.1. RowKey四大特性 2.1.1 字符串类型 虽然行键在HBase中是以byte[]字节数组的形式存储的,但是建议在系统开发过程中将其数据类型设置为Strin ...
- 大数据性能调优之HBase的RowKey设计
1 概述 HBase是一个分布式的.面向列的数据库,它和一般关系型数据库的最大区别是:HBase很适合于存储非结构化的数据,还有就是它基于列的而不是基于行的模式. 既然HBase是采用KeyValue ...
- HBase面试问题
一.HBase的特点是什么 1.HBase一个分布式的基于列式存储的数据库,基于hadoop的hdfs存储,zookeeper进行管理. 2.HBase适合存储半结构化或非结构化数据,对于数据结构字段 ...
- Hbase多列范围查找(效率)
Hbase索引表的结构 Hbase Rowkey 设计 Hbase Filter Hbase二级索引 Hbase索引表的结构 在HBase中,表格的Rowkey按照字典排序,Region按照RowKe ...
- hbase 程序优化 参数调整方法
hbase读数据用scan,读数据加速的配置参数为: Scan scan = new Scan(); scan.setCaching(500); // 1 is the default in Scan ...
- HBase之六:HBase的RowKey设计
数据模型 我们可以将一个表想象成一个大的映射关系,通过行健.行健+时间戳或行键+列(列族:列修饰符),就可以定位特定数据,Hbase是稀疏存储数据的,因此某些列可以是空白的, Row Key Time ...
随机推荐
- 14.Jmeter聚合报告各项含义
Aggregate Report 是 JMeter 常用的一个 Listener,中文为“聚合报告” Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Na ...
- PHP中global与$GLOBALS的区别
单一个global是一个关键字,通常附加在变量前,用于将变量声明至全局作用域: $GLOBALS是预定义的超全局变量,把变量扔到里边的话一样可以带到全局去. $GLOBALS 是一个关联数组,每一个变 ...
- PHP 原生上传图片
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> < ...
- 2.3 Nginx服务的启停控制
在Linux平台下,控制Nginx服务的启停有多种方法 2.3.1 Nginx服务的信号控制 在Nginx服务的启停办法中,有一类是通过信号机制来实现的,Nginx服务器的信号控制如下: Nginx服 ...
- Spring Cloud Eureka自我保护机制
自我保护背景 首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行. 默认情况下,如果Eureka Serve ...
- 23-python基础-python3-浅拷贝与深拷贝(1)
1.可变和不可变数据类型. 列表是‘可变的’数据类型,它的值可以添加.删除或改变. 字符串是‘不可变的’,它不能被更改. (1)字符串 尝试对字符串中的一个字符重新赋值,将导致TypeError错误. ...
- 线程分离pthread_detach()中的return()和pthread_exit()
#include <stdio.h> #include <pthread.h> pthread_t tid[]; void *func_2(void *arg); void * ...
- Pytest使用自定义标记mark只执行部分用例
• 场景:只执行符合要求的某一部分用例 可以把一个web项目划分多个模块,然后指定模块名称执行. App自动化时,如果想Android和IOS公用一套代码时,也可以使用标记功能,标明哪些是IOS 的用 ...
- Oracle如何杀同库不同实例的会话
今天处理了一个生产上的问题,主要就是杀会话, 生产环境是Oracle11gR2 RAC:有同事开发报表,报表工具连接到数据库上特别嚣张,把内存pin住: Select s.INST_ID, s.Mac ...
- ARM发展简史
ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权.却做到了在手持设备市场上占有90%以上的份额. 软银在2016年耗资320亿美元拿下ARM,使得本来就大红大紫的ARM公司,再一次窜到了业界人 ...