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

时间:2014-06-09 13:11:21

标签: hadoop hbase

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

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

我正在改进我的问题

以下是我的用例。

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

  1. 我将上面的博客存储到一个带有单独的rowkey和相同列族的hbase表(Log)中 防爆。

    for Retailer - IP | DateTime |希德|零售商

    分类 - IP | DateTime |希德|零售商|分类

    • 下进行。

    for Product - IP | DateTime |希德|零售商|类别|产品

  2. 从上表我计算Day点击并存储到其他hbase表中,如(Retailer_Day_cnt,Category_Day_Cnt,Product_Day_Cnt)
  3. 在这里,我的问题是将数据存储到hbase中的最佳方法是1个和2个案例,是单独的hbase表还是列族。

    注意:在case1中,我只进行写操作,但在case2中,我将进行多次读写操作。

    提前致谢 苏伦德拉

3 个答案:

答案 0 :(得分:1)

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

在此处查找更多详情: Hbase Book

Similar question

答案 1 :(得分:0)

这取决于你的用例。

如果您拥有相同的rowKey但数据不同,则可以划分为不同的列系列。但如果rowkeys不同,则将其放入不同的表中。

这还取决于您是否具有单次写入多次读取(即,低写入吞吐量可以)或者您希望高写入吞吐量。您还如何分配数据。如果一个列族与其他列族相比具有大量数据(大小),那么最好将列族放入不同的表中。

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

答案 2 :(得分:0)

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