我的hbase行键是不同的,我也需要聚合数据和单独存储。在这个用例中,哪一个是最好的方法
在一个hbase表中创建多个hbase表或多个列族的最佳方法是什么
我正在精炼我的问题
下面是我的用法。
我正在处理的博客有零售商,类别,产品点击。
-
我将上述weblog存储到一个hbase表(Log)中,具有单独的rowkey和相同的列族交货。
- a .
for Retailer—IP | DateTime | Sid | Retailer
- b .
for Category—IP | DateTime | Sid | Retailer | Category
- c .
产品—IP |日期时间| Sid |零售商|类别|产品
- 从上面的表我计算日点击和存储到其他hbase表,如(Retailer_Day_cnt, Category_Day_Cnt, Product_Day_Cnt)
这里我的问题是什么是最好的方式来存储数据到hbase上面的1和2种情况,是单独的hbase表或列族。
注意:在case1中,我只做写操作,但在case2中,我将做多个读和写操作。
提前感谢苏伦德拉
从性能的角度来看,列族越少越好。由于表中的所有列族同时刷新,即使某些列族的数据非常少,也会使刷新效率降低。如果你的表写的很重,这将导致很多hfiles ->增加压缩->增加GC暂停,这可能会使整个hbase非常慢,所以最好不要使用多列族,如果你真的不需要它们,或者所有列族将有相同的数据量。
在这里找到更多细节:Hbase Book
相似的问题
这取决于你的用例。
如果你有相同的rowKey但不同的数据,那么你可以划分到不同的列族。但是,如果rowkey不同,则将其放入不同的表中。
这也取决于你是单写多读(即低写吞吐量是可以的)还是你想要高写吞吐量。你的数据是如何分配的。如果一个列族比其他列族有更多的数据(在大小上),最好将这些列族放到不同的表中。
如果你给出更多关于你的用例的细节,我可以更具体。
行键设计是这些场景中的主要挑战。如果您能够以这样一种方式使行键可以用于所有目的,那么您可以继续使用不同的列族,否则多个表将是唯一的选择。对于您的情况,似乎要将聚合结果存储在必须具有不同逻辑行键的第二个表中。因此,您应该使用两个表方法,其中第一个表存储所有输入(一次写入多次读取),第二个表存储处理过的/聚合的数据。