2015-02-11 96 views
1

HBase扫描机制的setCaching和setBatch之间有什么区别? 在扫描大量数据时,为了获得最佳性能,我必须使用什么?HBase扫描操作缓存

回答

3

除非你具有很多列(或非常大的)超宽表,你应该完全忘记setBatch()和专注于setCaching():


setCaching(INT缓存)

设置将传递给扫描仪的缓存行数。如果未设置,则将应用配置设置HConstants.HBASE_CLIENT_SCANNER_CACHING。更高的缓存值将使扫描仪更快,但会使用更多的内存。

setBatch(INT批)

设定值的最大数量返回每个调用next()


setBatch是关于应该是该行的值的数目在每次调用/迭代时返回。这里有一个不错的文章:http://blog.jdwyah.com/2013/08/hbase-scan-batch-vs-cache.html

+0

什么是适当的设置,如果你确实是有许多列超宽表格?我们应该设置Cache(1)吗? – nont 2015-03-05 16:12:18

+0

从阅读hbase源代码看来,你可以通过setCaching(-1)关闭缓存, – nont 2015-03-07 17:37:08

0

指定一个扫描程序缓存,在扫描结果返回之前将被填充,在返回结果之前将setCaching设置为要缓存的行数。默认情况下,使用表格上的缓存设置。目标是平衡IO和网络负载。

公共扫描setCaching(INT缓存)

要限制列数,如果你的表有很宽的行(用大量的列行),使用setBatch(INT批),并将其设置为数字您想要在一批中返回的列。大量的列不是推荐的设计模式。

公共扫描setBatch(INT批)

这是很好的链接http://www.cloudera.com/documentation/enterprise/5-5-x/topics/admin_hbase_scanning.html