现在 TableMapReduceUtil 恢复在传入的 Scan 对象上设置扫描器缓存(在将结果返回到客户端之前缓存的行数)的选项。由于 HBase 0.95 中的错误([HBASE-11558]),此功能丢失 (https://issues.apache.org/jira/browse/HBASE-11558)),修正了 HBase 0.98.5 和 0.96.3。 选择扫描程序缓存的优先顺序如下:

1.在扫描对象上设置的缓存设置。

2.通过配置选项hbase.client.scanner.caching指定的缓存设置,可以在 hbase-site.xml 中手动设置,也可以通过辅助方法TableMapReduceUtil.setScannerCaching()设置。

3.默认值HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING,设置为“100”。

优化缓存设置是平衡客户端等待结果的时间与客户端需要接收的结果集数量。 如果缓存设置太大,客户端可能会等待很长时间,甚至可能超时。 如果设置太小,则需要将结果分多个部分返回。 如果您将扫描看作是铲子,那么更大的缓存设置相当于更大的铲子,而更小的缓存设置等价于为了填满桶而进行更多的铲动。

上面提到的优先级列表允许您设置一个合理的默认值,也可以根据需要重写。

有关[Scan](https://hbase.apache.org/apidocs/org/apache/hadoop op/hbase/client/scan.html)的更多细节,请参阅 API 文档。