HBASE顺序行键(YYYYMMDDHHMMSS),确定性非随机盐

时间:2017-06-03 11:03:14

标签: hbase row-key

我的行键的初始开始部分看起来像“YYYYMMDDhhmmss”,其中'ss'始终为00。 示例:20170603162100,对应于2017年6月6日16:21 (不要问我为什么,但时间戳必须在钥匙的开头!)

这显然是每分钟(显然每分钟都是唯一的)数据。

这受到地区热点的影响。 区域服务器上的行键将如下所示:

我的阅读模式:获取一个独特的分钟数据(不是一小时,一天,一个月,一年)

假设我有10个区域服务器。

这是我想到的解决方案,它看起来像一种盐(但是确定性的,而不是随机的):

我看到mm Part - minute并根据它分配盐。 00分钟:前缀A到行键 01分钟:前缀B到行键 .. 09分钟:前缀J到行键 10分钟:前缀A到行键

这样,所有“A”键都应分发到第一个区域服务器,依此类推。 优点可能是:对同一区域服务器的所有单个分钟请求,这对我来说是可以忍受的。并在下一分钟,所有请求到其他区域服务器。

此外,在检索时,我不必进行并行读取,因为我实际上知道盐。

有人可以解释我是不是错了?

1 个答案:

答案 0 :(得分:1)

嗯,你只有27分钟的英文字母,可能我建议使用双字母盐,它仍然应该正确分发。 (你有多少个节点?)。

或者,您可以尝试从行键中删除秒数并将其反转。