gpt4 book ai didi

Hbase 和 HFile。它如何存储列族?

转载 作者:行者123 更新时间:2023-12-04 06:37:59 26 4
gpt4 key购买 nike

如果您有一个列族,那么行键的所有列都在同一个 HFile 中?来自行键和相同列族的数据是否可以混合在不同的 HFile 中?这是因为我认为它们是排序的,但我在一本书中读到:

来自单行的单个列族的数据不需要存储在同一个 HFile 中。 这就是为什么该行可能太宽并且不适合单个 HFile 的原因?

唯一的要求是在 HFile 中,一行列族的数据存储在一起。 对我来说似乎有点矛盾。

笔记:
我一直在阅读有关该主题的一些内容。 HBase 使用 LSM 树。
我有一个行键和一个 HFile 中的所有数据。之后,我可以添加一些新数据,它们会存储在内存中,当内存已满时,HBase 会将这些数据存储在 中。新品 H文件。这样,我就可以为两个 HFile 中的一个行键设置限定符。如果我想对该行键执行获取或扫描操作,我将不得不在两个文件中查找。
随着时间的推移,HBase 将执行一次主要压缩,它将创建一个唯一的 HFile 加入旧的两个 HFile,并在压缩后删除它们。所以,如果我想查找那个行键,我只需要一次搜索。我对吗??我不明白为什么会有小压缩和大压缩,因为它们似乎做同样的事情。

最佳答案

列族是 HFile 的集合。如果你查看一个表的目录结构,它看起来是这样的:

  • /table/region-id/column-family1/[HFile 列表]
  • /table/region-id/column-family2/[HFile 列表]

  • 这些 HFile 是不可变的,并且是经过排序的。读取时,扫描器(读取数据)确保在读取行键和给定列族的数据时考虑所有 HFile。

    来自单行的单个列族的数据不需要存储在同一个 HFile 中。
    所以,这是真的。

    第二个粗体语句,可能是因为HFile中的数据是经过排序的,所以在给定的HFile中,与行键相关的数据存储在一起。

    关于Hbase 和 HFile。它如何存储列族?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22732179/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com