2。hbase CRUD--Read(query) operations

本文详细介绍了HBase中扫描操作的实现原理,包括如何通过Get转换为Scan、使用KeyValueHeap定位扫描位置、限制扫描结果大小的方法及扫描跨区域的透明处理机制。此外,还探讨了扫描ID生成方式的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

read



 

 

 

 

Note:

-Gets will be converted to scan per Get in RS

-scan is needless to use offset for retrieving ranged rows.this is different from common RMDBS.and this is implemented by RS used KeyValueHeap to mark scan position

-in hbase,there is a param called "hbase.client.scanner.max.result.size" for limit the result size(bytes) from RS,so RS will use both this param and caching to limit the rows to be returned.

-as Batch #3 diagramed above ,client will use the endkey of batch #2 as startkey to relocate next region,

so it's transparently implement scan cross region for client .

-as u see,hbase Scan is probed to regions continuously(NOT concurrently),so the returned results ordered by rowkeys in ascend.once the results size is satisfied requirement,scan will be stoped there.

-I dont know why the scannerId is generated by random,and never check for duplication in regionserver!!

if you know ,give me a clue please~~ ( as 2。hbase CRUD--Lease in hbase ,there is bug :)

protected long addScanner(RegionScanner s) throws LeaseStillHeldException {
    long scannerId = -1L;
    scannerId = rand.nextLong();
    String scannerName = String.valueOf(scannerId);
    scanners.put(scannerName, s);   
    this.leases.createLease(scannerName, new ScannerListener(scannerName));
    return scannerId;
  }

 

ref:

2。hbase CRUD--Read(query) operations(server side) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值