HBase扫描操作缓存
答
除非你具有很多列(或非常大的)超宽表,你应该完全忘记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
答
指定一个扫描程序缓存,在扫描结果返回之前将被填充,在返回结果之前将setCaching设置为要缓存的行数。默认情况下,使用表格上的缓存设置。目标是平衡IO和网络负载。
公共扫描setCaching(INT缓存)
要限制列数,如果你的表有很宽的行(用大量的列行),使用setBatch(INT批),并将其设置为数字您想要在一批中返回的列。大量的列不是推荐的设计模式。
公共扫描setBatch(INT批)
这是很好的链接http://www.cloudera.com/documentation/enterprise/5-5-x/topics/admin_hbase_scanning.html
什么是适当的设置,如果你确实是有许多列超宽表格?我们应该设置Cache(1)吗? – nont 2015-03-05 16:12:18
从阅读hbase源代码看来,你可以通过setCaching(-1)关闭缓存, – nont 2015-03-07 17:37:08