从HBase表中获取过去X小时的所有数据的最佳方法是什么?
我有写入HBase的事件流。每个事件都有从HBase表中获取过去X小时的所有数据的最佳方法是什么?,hbase,Hbase,我有写入HBase的事件流。每个事件都有user\u id、event\u timestamp和description 假设我需要运行一个ETL作业,该作业从表中检索过去12小时的所有数据。我考虑了两种获取数据的方法(我使用的是Java API): 使用setTimeStamp扫描方法 使用event\u timestamp作为行键前缀,但据我所知,这是一种不好的做法,因为它会导致热点 有更好的解决方案吗?您的第一种方法: 使用setTimeStamp扫描方法 听起来是个好主意。你完全正确,第二
user\u id
、event\u timestamp
和description
假设我需要运行一个ETL作业,该作业从表中检索过去12小时的所有数据。我考虑了两种获取数据的方法(我使用的是Java API):
setTimeStamp
扫描方法event\u timestamp
作为行键前缀,但据我所知,这是一种不好的做法,因为它会导致热点setTimeStamp
扫描方法event\u timestamp
作为行键前缀,但据我所知,这是一种不好的做法,因为它会导致热点INT_MAX
-当前时间等)是非常有问题的,因此不建议这样做
当然,您可以使用时间派生值作为行键的后缀:这样做的原因是避免将任何一行增长太大,因为行不会跨区域分割,而是作为一个原子单位保留
在这种情况下,您将以多种方式表示时间:
-yyyymmdd
- 绝对时间,或
- 相对于行的粗粒度时间后缀