2011-01-25 53 views
2

比方说,我创建了一个表HBase的列宽扫描和获取

rowkey(attrId + attr_value)//复合键

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

当使用扫描功能时,我会每次在迭代器中获取1行,如果列限定符达到数百万条目。你如何循环,并会有缓存问题?

谢谢。

回答

3

扫描获取行。您可以对扫描进行限定,以便它仅提取给定的限定符或给定的家族,但那么这将从扫描中返回(并且只能对扫描中包含的数据进行过滤)。

如果您在单行中可能有数百万列,那可能是一个问题:这意味着返回该行可能是非常大的网络传输。如果您的行大小超出您的区域大小,它也可能导致您的区域服务器上发生OOM错误,并且存储空间不足(每个区域一行)。

但是,忽略所有这些,您可以遍历客户端中的列和列限定符。您可以从结果集中获取Map,从映射到限定符到值的映射。但是,这可能不是你真正想做的事

1

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