我正在尝试使用HBase表中的前缀过滤器扫描一些行。我在HBase 0.96。
我想增加每个RPC调用的吞吐量,以减少命中该区域的请求数。
我在扫描对象上尝试了getCaching(int)和setCacheBlocks(true)。我也尝试添加resultScanner.next(int)。使用所有这些组合我仍然无法减少RPC调用的数量。我仍在为每个密钥敲击HBase区域,而不是为每个RPC调用带来多个密钥。
HBase区域服务器/ Datanode分配了足够的CPU和内存。此外,我的数据均匀分布在不同的区域服务器上。我每个键带回的数据也不多。
我观察到当我向表中添加更多数据时,请求所花费的时间会增加。当请求数量增加时,它也会增加。
感谢您的帮助。
[R
答案 0 :(得分:0)
前缀过滤器通常是性能杀手,因为它们执行全表扫描,始终在扫描中使用开始和停止行而不是前缀过滤器。
Scan scan = new Scan(Bytes.toBytes("prefix"),Bytes.toBytes("prefix~"));
当从Result
迭代ResultScanner
时,每次迭代都是RPC调用,您可以调用resultScanner.next(n)
一次性获得一批结果。