2015-02-11 199 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