HBase扫描操作缓存

时间:2015-02-11 14:32:48

标签: java hadoop hbase

HBase扫描机制中setCaching和setBatch有什么区别? 在扫描大数据量时我必须使用什么才能获得最佳性能?

2 个答案:

答案 0 :(得分:3)

除非你的超宽表包含许多列(或非常大的列),否则你应该完全忘记setBatch()并专注于setCaching():


setCaching(int caching)

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

setBatch(int batch)

设置每次调用next()

时要返回的最大值数

setBatch是关于每次调用/迭代时应返回的行的值的数量。这是关于它的好文章:http://blog.jdwyah.com/2013/08/hbase-scan-batch-vs-cache.html

答案 1 :(得分:0)

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

public Sc​​an setCaching(int caching)

如果您的表具有非常宽的行(具有大量列的行),要限制列数,请使用setBatch(int batch)并将其设置为要在一个批处理中返回的列数。大量的列不是推荐的设计模式。

public Sc​​an setBatch(int batch)

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