hbase性能行键与列限定符

qlzsbp2j  于 2021-06-10  发布在  Hbase
关注(0)|答案(1)|浏览(297)

问题:我需要在hbase中插入一些用户ID,每小时和每天(例如:2201201711,这代表2017年1月22日上午11点的数据)。如果我想获取某个日期或数据和时间范围内某个特定小时的所有用户ID,那么表的设计应该是什么。
到目前为止,我所做的是将用户id保留为行键,并在运行时在同一列族中创建列。文件数据:用户id |日期时间1 2201201711 2 2201201711 3 2201201711
我的hbase行键将是1、2和3,新列将被创建为2201201711。
我知道我可以使用复合键使用日期,小时和用户id。但我想了解它在性能方面提供了什么好处。
如果我选择一整列(没有任何过滤器)与使用复合行键查找相比,性能有什么不同。

mwg9r5ms

mwg9r5ms1#

根据要放入此表的数据量和读取此表的方式(扫描或获取),解决方案可能会有所不同。
我的解决方案是考虑到,这个表将是巨大的,并且经常要对这个表执行扫描:
数据时间部分可以转换为epoch,转换后的值可以用作表的行键,并且用户id可以保留在列限定符中。这样,当您想在scan中使用startrow和endrow在整个表中扫描特定范围的datetime时,这将非常有效。据我所知,当我们用这种方式扫描一个巨大的表时,scan的性能更好,因为它跳过了mentinoed startrowkey和endrowkey前后的记录。

相关问题