hadoop - 在 HBase 中使用月份作为列族

标签 hadoop hbase

我正在尝试设计一个用于在 HBase 中存储时间序列数据的表。由于一个月内写入的所有数据都将“一次全部”读取以进行分析,我想知道使用月份(作为字符串,如“201501”)作为列族是否是一个好的选择选择。

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

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

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

最佳答案

一般来说,HBase 中有很多列族会影响性能。我认为使用 HBase 时不建议使用超过 2 个或 3 个列族。我建议浏览此 link更多细节。

另外,当您创建表时,列族是表架构的一部分。

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

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

据我所知,一个好的解决方案是在您的行键中包含日期 ( or reverse timestamp )。 示例:XXX-YYY-20150106XXX-YYY-9223370616269200807(反向时间戳)

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

关于hadoop - 在 HBase 中使用月份作为列族,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808701/

相关文章:

hadoop - Cloudera Hadoop磁盘空间和hdfs有问题吗?

hbase - 如何将 Hive 表与 HBase 表映射?

java - HBase MapReduce

hadoop - 带偏移量的 Hbase 扫描

hadoop - 无法使用hbase-shaded-client jar,因为其内部依赖于log4j-1.2.17(CVE-2019-1757)

hadoop - HBase 与 Java 8 和 zookeeper 有问题

amazon-web-services - AWS 文件上传

hadoop - hive :NULL col_name和NULL作为表DDL中的col_name之间的区别

hadoop - hadoop-2.7.3 中的 yarn : yarn-default. xml 位置

hadoop - 在配置单元中执行插入覆盖查询时出错