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



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

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

我正在精炼我的问题

下面是我的用法。

我正在处理的博客有零售商,类别,产品点击。

  1. 我将上述weblog存储到一个hbase表(Log)中,具有单独的rowkey和相同的列族交货。

    • a .

    for Retailer—IP | DateTime | Sid | Retailer

    • b .

    for Category—IP | DateTime | Sid | Retailer | Category

    • c .

    产品—IP |日期时间| Sid |零售商|类别|产品

  2. 从上面的表我计算日点击和存储到其他hbase表,如(Retailer_Day_cnt, Category_Day_Cnt, Product_Day_Cnt)

这里我的问题是什么是最好的方式来存储数据到hbase上面的1和2种情况,是单独的hbase表或列族。

注意:在case1中,我只做写操作,但在case2中,我将做多个读和写操作。

提前感谢苏伦德拉

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

在这里找到更多细节:Hbase Book

相似的问题

这取决于你的用例。

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

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

如果你给出更多关于你的用例的细节,我可以更具体。

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

最新更新