微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R01 - 009、请描述 Hbase 中 scan 对象的 setCache 和 setBatch 方法的使用

初学耗时:0.5h

注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。

一、请描述 Hbase 中 scan 对象的 setCache 和 setBatch 方法的使用



记忆词:

  ...

R01 - 999、HBase、实时数据库


ギ 舒适区ゾ || ♂ 累觉无爱 ♀





一、请描述 Hbase 中 scan 对象的 setCache 和 setBatch 方法的使用

cache:

  • 认情况下,如果你需要从hbase中查询数据,在获取结果ResultScanner时,hbase会在你每次调用ResultScanner.next()操作时对返回的每个Row执行一次RPC操作。
  • 即使你使用ResultScanner.next(int nbrows)时也只是在客户端循环调用RsultScanner.next()操作,你可以理解为hbase将执行查询请求以迭代器的模式设计,在执行next()操作时才会真正的执行查询操作,而对每个Row都会执行一次RPC操作。
  • 因此显而易见的就会想如果我对多个Row返回查询结果才执行一次RPC调用,那么就会减少实际的通讯开销。
  • 这个就是hbase配置属性“hbase.client.scanner.caching”的由来,设置cache可以在hbase配置文件显示静态的配置,也可以在程序动态的设置。
  • cache值得设置并不是越大越好,需要做一个平衡。
  • cache的值越大,则查询性能就越高,但是与此同时,每一次调用next()操作都需要花费更长的时间,因为获取的数据更多并且数据量大了传输到客户端需要的时间就越长,一旦你超过了maximum heap the client process 拥有的值,就会报outofmemoryException异常。
  • 当传输rows数据到客户端的时候,如果花费时间过长,则会抛出ScannerTimeOutException异常。


batch:

  • 在cache的情况下,我们一般讨论的是相对比较小的row,那么如果一个Row特别大的时候应该怎么处理呢?要知道cache的值增加,那么在client process 占用的内存就会随着row的增大而增大。
  • 在HBase中同样为解决这种情况提供了类似的操作:Batch。
  • 可以这么理解,cache是面向行的优化处理,batch是面向列的优化处理。
  • 它用来控制每次调用next()操作时会返回多少列,比如你设置setBatch(5),那么每一个Result实例就会返回5列,如果你的列数为17的话,那么就会获得四个Result实例,分别含有5,5,5,2个列。


- 下面会以表格的形式来帮助理解,假设我们拥有10Row,每个row拥有2个family,每个family拥有10个列。(也就是说每个Row含有20列) ![alt](https://www.icode9.com/i/ll/?i=20190703191927503.png) - RPCs=(Rows* Cols per Row) / Min(Cols per Row, Batch size) / Scanner caching

alt





彪悍的人生没有放假!

- - - - - - - - - - - - - - - - - - - - - - - - - - - -


※ 世间诱惑何其多,坚定始终不动摇。

企业在实施网上培训时,应该注意哪些事项?


A、应以线下培训为主,网上培训为辅,将两者进行有效结合。
B、应明确网上培训计划。
C、网上培训系统的设计应满足教与学双方不同层面的要求。
D、要有一套完整的教学软硬体。
E、应该选择适合本企业经营特色及培训要求的网络产品。

BCDE

alt



彪悍的人生没有放假!

- - - - - - - - - - - - - - - - - - - - - - - - - - - -


注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。

我知道我的不足,我也知道你的挑剔,但我就是我,不一样的烟火,谢谢你的指指点点,造就了我的点点滴滴:)!



彪悍的人生没有放假!


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐