6

如何配置 HBase 以使扫描程序一次只检索多条记录?或者当数据库包含大量记录时如何改进扫描仪/

4

3 回答 3

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#设置缓存(整数)

您的扫描仪很可能很慢,因为您一次只读取一条记录(包括所有来回的 RPC 协议等等)。所以如果你打算大量阅读,让系统提前为你缓存一些结果。

于 2010-05-11T06:45:22.440 回答
5

您可能还想检查过滤器 API,它允许您有选择地向客户端返回行或单元格的子集:http: //hadoop.apache.org/hbase/docs/current/api/org/apache/hadoop/ hbase/filter/package-summary.html

于 2010-05-13T08:28:32.553 回答
1

您可以使用scan.setMaxResultSize来控制HBase每次检索的记录。(这并不意味着您从此查询中获得的结果更少)

如果你想像 SQL 一样限制结果,select top 100 from TABLE; 你需要使用PageFilter^_^

于 2014-09-26T14:11:50.847 回答