我是否要配置HBase,以便扫描程序一次只检索多个记录?或者,当数据库包含大量记录时,如何改进扫描程序/
答案 0 :(得分:11)
我相信扫描仪实际上一次只能请求一个项目,除非您设置了缓存。您可以通过getCaching()
进行检查每次调用ResultScanner#next()时,它都会检索下一个项目。您还可以使用ResultScanner#next(int)一次检索多个结果。
设置扫描仪时,您可以使用Scan#setCaching提前检索结果 http://hadoop.apache.org/hbase/docs/r0.20.4/api/org/apache/hadoop/hbase/client/Scan.html#setCaching(int)
您的扫描仪很可能很慢,因为您一次只读取一条记录(包括RPC协议的所有来回和诸如此类的东西)。因此,如果您打算阅读很多内容,请让系统提前为您缓存一些结果。
答案 1 :(得分:5)
您可能还想检查过滤器API,它允许您有选择地将行或单元的子集返回到客户端:http://hadoop.apache.org/hbase/docs/current/api/org/apache/hadoop/hbase/filter/package-summary.html。
答案 2 :(得分:1)
您可以使用scan.setMaxResultSize
来控制每次从HBase
检索到的记录。 (这并不意味着您从此查询中获得的结果更少)
如果要限制结果,例如SQL select top 100 from TABLE;
您需要使用PageFilter
^ _ ^