【问题标题】:What is best approach creating multiple hbase tables or multiple column families in single hbase table在单个 hbase 表中创建多个 hbase 表或多个列族的最佳方法是什么
【发布时间】:2014-07-30 00:57:24
【问题描述】:

我的 hbase 行键不同,我还需要聚合数据并单独存储。在这个用例中,哪一个是最好的方法

在单个 hbase 表中创建多个 hbase 表或多个列族的最佳方法是什么

我正在完善我的问题

下面是我的用例。

我正在处理具有零售商、类别、产品点击次数的网络日志。

  1. 我将上面的 weblog 存储到一个 hbase 表(日志)中,具有单独的 rowkey 和相同的列族 前任。

    • 答.

    对于零售商 -- IP |日期时间 |席德 |零售商

    • B.

    对于类别 -- IP |日期时间 |席德 |零售商 |类别

    • C.

    对于产品 -- IP |日期时间 |席德 |零售商 |类别 |产品

  2. 根据上表,我正在计算当日点击次数并存储到其他 hbase 表中,例如(Retailer_Day_cnt、Category_Day_Cnt、Product_Day_Cnt)

我的问题是,在上述 1 和 2 种情况下,将数据存储到 hbase 中的最佳方式是什么,它是单独的 hbase 表还是列族。

注意:在 case1 中我只进行写入,但在 case2 中我将进行多次读取和写入。

提前致谢 苏伦德拉

【问题讨论】:

    标签: hadoop hbase


    【解决方案1】:

    从性能角度来看,列族越少越好。由于 table 中的所有列族都会同时刷新,即使某些列族的数据非常少,也会降低刷新效率。 .如果你的表写得很重,这将导致很多 hfiles -> 压缩增加 -> GC 暂停增加,这会使整个 hbase 非常慢,所以如果你真的不需要它们或所有列,最好不要使用多个列族家庭将拥有相同数量的数据。

    在此处查找更多详细信息: Hbase Book

    Similar question

    【讨论】:

      【解决方案2】:

      这取决于你的用例。

      如果你有相同的rowKey但不同的数据,那么你可以分成不同的列族。但是如果行键不同,则将其放入不同的表中。

      这也取决于您是单写多读(即低写入吞吐量是可以的)还是您想要高写入吞吐量。还有你的数据是如何分布的。如果一个列族与其他列族相比具有大量数据(在大小上),则最好将列族放入不同的表中。

      如果您提供有关您的用例的更多详细信息,我可以更具体。

      【讨论】:

        【解决方案3】:

        行键设计是这些场景中的主要挑战。 如果您能够以这样的方式创建行键,以便您可以将其用于所有目的,那么您可以继续使用不同的列族,否则多个表将是唯一的选择。对于您的情况,您似乎将聚合结果存储在必须具有不同逻辑行键的第二个表中。因此,您应该使用两个表的方法,其中第一个表存储所有输入(一次写入多次读取),第二个表存储处理/聚合的数据。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-02-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多