Hbase性能rowkey vs列限定符

时间:2017-01-23 10:01:55

标签: hbase bigdata nosql

问题:我需要在每小时和每天之后在Hbase中插入一些用户ID(例如:2201201711,这表示2017年1月22日:上午11点数据)。如果我想在日期或数据和时间范围内获取特定小时的所有用户ID,那么该表的设计应该是什么。

到目前为止我做了什么,我将用户ID保存为行键,并在同一列族中的运行时创建列。 档案数据: 用户ID |约会时间 1 2201201711 2 2201201711 3 2201201711

我的hbase行键为1,2和3,将创建新列2201201711。

我知道我可以使用日期,小时和用户ID来使用复合键。但我想了解它在性能方面提供了哪些好处。

如果选择整列(没有任何过滤器)与使用复合行键查找,性能差异是什么。

1 个答案:

答案 0 :(得分:0)

解决方案可能会根据您要放入此表的数据量以及您经常阅读此表(Scan或Get)的方式而有所不同。

我的解决方案是考虑到这一点,这个表格将是巨大的,并且通常会在此表上执行扫描:

数据时间部分可以转换为EPOCH,转换后的值可以用作表的rowKey,用户ID可以保留在列限定符中。通过这种方式,当您希望使用扫描中的startRow和endRow扫描整个表以查找特定范围的日期时间时,效率会很高。据我所知,当我们以这种方式扫描一个巨大的表时,扫描效果会更好,因为它会跳过关注的startRowKey和endRowKey之前和之后的记录。