HBase 如何按 timestamp读取

有这样一个表,rowkey的设计为 date-id-dept-sid-uid-time-timestamp (如图),需求为高效的读取一段timestamp内的所有数据,如何实现?
QQ截图20161008113930.jpg

 

mopishv0 - 高级开发工程师@美团

赞同来自: Hagrid fish

原生hbase API中无法按照rowkey后缀范围读取数据。 无论用timerange,还是filter,都需要遍历全部数据。

fish - Hadooper

赞同来自: Hagrid

前缀可以提供范围scan,但需要考虑作为前缀之后是否会有入库热点问题。

Hagrid

赞同来自:

如果时间戳作为前缀肯定有入库热点问题的。有什么好的随机打乱的办法吗,md5吗?

Hagrid

赞同来自:

我发现原来HBase是适合这样的场景,可以大规模的最好是rowkey无顺序的入库,然后是小规模的无顺序的随机查找。是吧。。。

Hagrid

赞同来自:

// 如果是游戏道具查询,那么 rowkey的设计为:roleid(变化的前缀,保证入库效率)+gid+日期(例如20161009)
// +"-"(方便顺序查询)+"时间戳(保证了id的唯一性)"

mopishv0 - 高级开发工程师@美团

赞同来自:

如果时间戳作为前缀,可以考虑salt,也就是给rowkey md5 后(md5过程可根据实际情况省略) mod region数量(region数量不变),这样的好处是请求均匀打到每个region中,遍历的话每个region进行一次scan,在客户端聚合结果即可。

要回复问题请先登录注册