Hbase 的列有没有多少个的限制呢

Hbase 的列有没有多少个的限制的说法呢,比如get某个rowkey,如果该rowkey对应的列数超过100万个列,get的性能就会严重下降,还是说没有限制
已邀请:

openinx - HBase Committer @小米

赞同来自: hmaster

就你说的这个问题来说,主要是列数到了100万之后,一个rowkey对应的行包含的cell会有100万这个数量级。如果你用默认的配置来get的话,肯定会很慢很慢。因为server要读这么多数据一次通过rpc都吐给你。
 
如果你在get上设置了一次rpc只吐10个cell给你(setMaxResultsPerColumnFamily(10)),然后用100*10^4/10次rpc吐给你,其实并没有啥问题。
 
怕就怕一行存这么多cell ,但业务并没有意识到,仍然一直用默认的配置来读取数据,这就对系统就有很巨大压力。当然, 这肯定不是一个好的实践。

Aaron - 80后IT男

赞同来自:

实际使用中,如果列的个数超过一定的值,比如我们有超过百万的列,用默认的get不止会慢还会报错,我们是用scan 中设置setBatch分批取出来。
设计上如果要这么存,查询时用过滤器筛选需要的数据是一个办法。

要回复问题请先登录注册