Hbase - 如何添加超级列系列?

时间:2017-07-03 07:57:44

标签: java mysql hbase super-columns

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

1 个答案:

答案 0 :(得分:1)

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

<强>更新

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

  

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

answer也很有用。