如果你有一个列族,rowkey的所有列都在同一个HFile中?来自rowkey和同一列族的数据可以混合在不同的HFile中吗?这是因为我认为它们已经分类了,但我读了一本书:
来自单个列族的单行数据不需要存储在同一个HFile中.这就是为什么行可能太宽而且不适合单个HFile?
唯一的要求是在HFile中,行的列族的数据存储在一起.这对我来说似乎有些矛盾.
注意:我一直在阅读有关该主题的一些内容.HBase使用LSM树.我有一个rowkey和一个HFile中的所有数据.之后,我可以添加一些新数据,它们将存储在内存中,当内存已满时,HBase会将这些数据存储在新的 HFile中.所以,我可以在两个HFile中为一个rowkey设置限定符.如果我想对该rowkey进行获取或扫描操作,我将不得不寻找两个文件.随着时间的推移,HBase将执行一个主要的压缩,它将创建一个唯一的HFile加入旧的两个HFile并在压缩后删除它们.所以,如果我想查找该rowkey,我只需要一次搜索.我对吗??我不明白为什么会有轻微和重大的压实,因为他们似乎也这样做.
小智 10
列族是HFiles的集合.如果查看表的目录结构,它看起来像这样:
这些HFile是不可变的,并且是有序的.在读取时,扫描器(读取数据)确保在读取行键和给定列族的数据时考虑所有HFile.
来自单个列族的单行数据不需要存储在同一个HFile中. 所以,这是事实.
第二个粗体声明,它可以来自HFile中的数据被排序的事实,因此在给定的HFile中,与行键相关的数据被存储在一起.
| 归档时间: |
|
| 查看次数: |
5266 次 |
| 最近记录: |