Hbase源码分析之org.apache.hadoop.hbase.client包
来源:互联网 发布:视频课程录像软件 编辑:程序博客网 时间:2024/06/05 11:05
Scan:设置scan记录的条件,buffer size,cache size等
ResultScanner:提供scan的接口,
ClientScaner:客户端 ResultScanner的实现,数据分布在多个region之间的,就依次读取。
用法如下:
HTableInterface tbl = null;
tbl = table.getTable("table_name");
Scan scan = new Scan();
//设置客户端缓存的记录数量,调用next方法时,根据这个参数,一次性从服务端返回cache大小的数据缓存在客户端,下次再调用next方法时,就直接从客户端缓存中取得下一条数据。
scan.setCaching(100);
scan.setCacheBlocks(true);
scan.setStartRow((userNum+"10").getBytes());
scan.setStopRow((userNum+"20").getBytes());
clscaner = (ClientScanner) tbl.getScanner(scan);
Result[] rets = clscaner.next();//获取下一行
Result[] rets = clscaner.limit(start, pageSize);//分页
在next方法中会do while循环调用nextScanner方法进行是否结束scan的判断,
循环结束的条件是,获取的记 录数量到达caching size的大小,或者不能满足server 端的filter的过滤条件而返回数据为空,或者当前是最后一个region或者当scan的stoprowkey比当前的region的endkey要小时,会自动结束scan,不会去下一个region进行scan。
HTable:提供和单个表交互的接口,包括put,get,delete,同时也提供ResultScaner的创建方法,它是非线程安全的,HTablePool是线程安全的。
以上所有的对region的操作,最终都会ServerCallable对RegionServer进行region操作的。下面对这个类重点说一下。
一个ServerCallale是针对一个Server 的某Region操作类,基于startrow定位Region(HRegionLocation),进而获取Region的location在哪个server实例上(HRegionInterface,服务端HRegionServer的客户端代理),调用call方法连接server实例,获取数据。
在实现类ScanerCallable中的call方法中,调用HRegionInterface(HRegionServer的客户端代理)的next方法获取Results。
通过RPC协议连接到HRegionServer后,在Server内部进行当前region的regionScaner(根据设置的startrow和endrow以及filter进行过滤)。
- Hbase源码分析之org.apache.hadoop.hbase.client包
- HBase源码分析之org.apache.hadoop.hbase.client.coprocessor包
- HBase源码分析之org.apache.hadoop.hbase.catalog包
- HBase源码分析之org.apache.hadoop.hbase.coprocessor包
- HBase源码分析之org.apache.hadoop.hbase.executor包
- HBase源码分析之org.apache.hadoop.hbase.filter包
- HBase源码分析之org.apache.hadoop.hbase.ipc包
- HBase源码分析之org.apache.hadoop.hbase.master包
- HBase源码分析之org.apache.hadoop.hbase.regionserver包
- HBase源码分析之org.apache.hadoop.hbase.master.handler包
- 【HBase】关于包org.apache.hadoop.hbase.client
- Error: org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException
- 处理org.apache.hadoop.hbase.client.ScannerTimeoutException
- 解决HBase org.apache.hadoop.hbase.client.RetriesExhaustedException:
- org.apache.hadoop.hbase.mapreduce.RowCounter源码
- 【HBase】org.apache.hadoop.hbase包及其类的说明
- org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 6 actions: DoNotRetryIOE
- org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException异常处理
- Machine Learning week 1 note cont.
- Heritrix源码分析(三) 修改配置文件order.xml加快你的抓取速度
- POJ 1961 Period(KMP思想的应用)
- Heritrix源码分析(四) 各个类说明(一)
- 飞行员配对方案问题
- Hbase源码分析之org.apache.hadoop.hbase.client包
- Heritrix源码分析(四) 各个类说明(二)
- struts2之单个文件上传
- [原]jquery第一行代码有意思的两点
- Heritrix源码分析(五) 如何让Heritrix在Ecplise等IDE下编程启动
- Heritrix源码分析(六) Heritrix的文件结构分析
- 最大子段和——解题报告
- Heritrix源码分析(七) Heritrix总体介绍
- USACO 1.1.3 Friday the Thirteenth