如何改进HBase扫描仪?

时间:2010-05-04 07:45:40

标签: hbase

我是否要配置HBase,以便扫描程序一次只检索多个记录?或者,当数据库包含大量记录时,如何改进扫描程序/

3 个答案:

答案 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 ^ _ ^