首页 文章

使用月份作为HBase中的列族

提问于
浏览
1

我正在尝试设计一个用于在HBase中存储时间序列数据的表 . 由于所有在一个月内写入的数据都将被读取"all at once"进行分析,我想知道 using the month (as a string, like '201501') as column family 是否是一个不错的选择 .

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

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

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

1 回答

  • 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'}

相关问题