【问题标题】:Hbase - How to add a super column family?Hbase - 如何添加超级列族?
【发布时间】:2017-07-03 07:57:44
【问题描述】:

我正在尝试创建将 MYSQL 数据库转换为 NOSQL Hbase 数据库的 Java 应用程序。
到目前为止,它从 mysql 读取数据并将其正确插入到 hbase
但现在我正在尝试处理 MYSQL 表之间的关系, 我知道如果有关系,你应该添加一个表作为超级列族。
我查看了 apatch 网站文档,但找不到任何东西。
有任何想法吗 ?

【问题讨论】:

    标签: java mysql hbase super-columns


    【解决方案1】:

    列族与关系无关。相比之下,您必须通过行键设计正确创建反向索引,这可能允许通过知道另一个表的键来有效地 O(1) 从一个表中检索数据。或者为了避免加入尝试将所有数据存储在一行中。任何为 HBase 提供 SQL 接口的工具都会产生需要时间来启动和执行的作业。如果您执行 Get 操作或扫描连续行,HBase 会很快。 希望这很有用。

    更新

    有关列族的更多详细信息,请查看好书 Architecting HBase Applications

    列族是 HBase 特有的概念,在其他 RDBMS 中是找不到的 应用程序。对于同一区域,不同的列族会将数据存储到 不同的文件,可以进行不同的配置。具有相同访问模式的数据 并且相同的格式应该被分组到相同的列族中。举个例子 关于格式,如果您需要存储大量文本元数据信息 客户档案除了每个客户档案照片的图像文件,您 可能希望将它们存储到两个不同的列族中:一个压缩的(其中 所有文本信息都将被存储),一个未压缩(其中图像 文件将被存储)。作为有关访问模式的示例,如果某些信息 大部分是阅读,几乎从不写,有些大部分是写,几乎从不 阅读,您可能希望将它们分成两个不同的列族。如果您要存储的不同列具有相似的格式和访问模式,请重新组合 它们在同一列族中。 给定 RegionServer 的写入缓存内存区域由所有列共享 为给定主机托管的所有区域配置的系列。滥用列族会给memstore带来压力,会产生很多小文件, 反过来会产生大量可能影响性能的压缩。那里 对您可以配置的列族数量没有技术限制 桌子。但是,在过去三年中,我们有机会使用的大多数用例 工作只需要一个列族。有些需要两个列族, 但是每次我们看到两个以上的列族时,都有可能并且 建议减少数量以提高效率。如果您的设计包括 超过三个列族,您可能需要更深入地了解它,看看是否真的需要所有这些族;最有可能的是,它们可以重新组合。如果你不 在您的两个列族和数据之间有任何一致性约束 在不同的时间进入它们,而不是为单个表创建两个列族,您还可以创建两个表,每个表都有一个列族。当需要决定区域的大小时,此策略很有用。的确,虽然它是 更好地保持两个列族的大小几乎相同,方法是将它们分开 两张不同的桌子,现在更容易让我独立成长。

    这个answer 也很有用。

    【讨论】:

    • 谢谢@gorros ,....
    • @AmineMostefaoui 我已经更新了答案。如果是您需要的,请标记为正确。
    • 谢谢@gorros
    猜你喜欢
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多