2011-01-25 90 views
2

比方說,我創建了一個表HBase的列寬掃描和獲取

rowkey(attrId + attr_value)//複合鍵

列=>商務部:DOC1,DOC:DOC2,...

當使用掃描功能時,我會每次在迭代器中獲取1行,如果列限定符達到數百萬條目。你如何循環,並會有緩存問題?

謝謝。

回答

3

掃描獲取行。您可以對掃描進行限定,以便它僅提取給定的限定符或給定的家族,但那麼這將從掃描中返回(並且只能對掃描中包含的數據進行過濾)。

如果您在單行中可能有數百萬列,那可能是一個問題:這意味着返回該行可能是非常大的網絡傳輸。如果您的行大小超出您的區域大小,它也可能導致您的區域服務器上發生OOM錯誤,並且存儲空間不足(每個區域一行)。

但是,忽略所有這些,您可以遍歷客戶端中的列和列限定符。您可以從結果集中獲取Map,從映射到限定符到值的映射。但是,這可能不是你真正想做的事

1

您也可以限制人數通過Scan.setBatch一次返回一行中的列。