在hbase中使用month作为列族

pcww981p  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(273)

我正在尝试设计一个表,用于在hbase中存储时间序列数据。由于一个月内写入的所有数据都将“一次全部”读取以进行分析,因此我想知道使用月份(作为字符串,如“201501”)作为列族是否是一个好的选择。
我的应用程序将在数据到达时保存时间戳,然后,在月末,所有与该月相关的数据都将使用hadoop作业进行分析。
根据规范,列族中的所有数据将存储在一起。在(1)设计和(2)性能方面,这是一个好的实践吗?
我不确定,因为这是一种远离关系世界的选择。

92vpleto

92vpleto1#

一般来说,hbase中有许多列族会影响性能。我认为在使用hbase时,不建议使用超过2或3个列族。我建议你浏览这个链接来了解更多的细节。
此外,在创建表时,列族也是表架构的一部分。
例子: create 'hbase_table',{NAME=>'columnFamily',VERSIONS=>3} 因此,如果您希望每个月都有一个新的列族,则必须在需要时更改表模式以添加列族,这并不理想。
据我所知,一个好的解决方案是在rowkey中有日期(或反向时间戳)。例子: XXX-YYY-20150106 或者 XXX-YYY-9223370616269200807 (反向时间戳)
然后,当您想分析1个月之间的数据时,您可以扫描表中的日期范围。例子: scan 'hbase_table',{STARTROW=>'XXX-YYY-20150101', STOPROW=>'XXX-YYY-20150201'}

相关问题