使用月份作为HBase中的列族

时间:2015-01-06 22:57:15

标签: hadoop hbase

我正在尝试设计一个用于在HBase中存储时间序列数据的表。由于所有在一个月内写入的数据都将被一次性读取并且#34;为了进行分析,我想知道使用月份(作为字符串,例如' 201501')作为列族是否是一个不错的选择。

我的应用程序将在数据到达时以时间戳保存,然后在月末,将使用hadoop作业分析与该月相关的所有数据。

根据规范,列族中的所有数据将一起存储。在(1)设计和(2)性能方面,这是一个很好的做法吗?

我不确定,因为这是远离关系世界的那种选择。

1 个答案:

答案 0 :(得分:2)

一般情况下,HBase中有许多列族会损害性能。我认为使用HBase时不建议使用超过2或3个列族。我建议浏览此link以获取更多详细信息。

此外,在创建表时,列族是表模式的一部分。

示例:create 'hbase_table',{NAME=>'columnFamily',VERSIONS=>3}

因此,如果您希望每个月都有一个新的列系列,那么您将不得不在需要时更改表架构以添加列族,这并不理想。

据我所知,这里一个很好的解决方案是在你的rowkey中加上日期(or reverse timestamp)。 示例:XXX-YYY-20150106XXX-YYY-9223370616269200807(反向时间戳)

然后,当您想要在1个月之间分析数据时,您可以扫描表格中的日期范围。 示例:scan 'hbase_table',{STARTROW=>'XXX-YYY-20150101', STOPROW=>'XXX-YYY-20150201'}

相关问题