分享

关于rowkey设计的问题

ighack 2019-7-19 10:46:16 发表于 疑问解答 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 2813
本帖最后由 ighack 于 2019-7-19 11:14 编辑

我的查询条件一般是时间。按网上说的我可以用时间做一个rowkey如果
20190719101401
20190719101402
20190719101403
20190719101404
20190719101405
20190719101406
20190719101407
查询的的时候用
setStartRow(20190719101401),setEndRow(20190719101407)
但这样会造成数据集中到一个HRegionServer
有说可以加一个前缀

byte prefix =
(byte) (Long.hashCode(timestamp) %
HRegionServer的数量);
就会变成
020190719101401
120190719101402
220190719101403
020190719101404
120190719101405
220190719101406
020190719101407
那我在做查询的时候是不是这样设啊
setStartRow(020190719101401),setEndRow(220190719101407)
这样查询会有不会有问题啊。比如丢数据
020190719101407这个值会不会查不出来啊

还有一种情况如果我把状态也拼到rowkey中(拼在最后一位)

0201907191014011
1201907191014021
2201907191014031
0201907191014042
1201907191014051
2201907191014062
0201907191014071
0201907191014082
0201907191014092
0201907191014101
那么我该如果设范围呢(只要状态为1的数据)
setStartRow(0201907191014011),setEndRow(0201907191014101)
这样做吗?



已有(1)人评论

跳转到指定楼层
hyj 发表于 2019-7-19 13:55:00
可以尝试用RowFilter过滤掉前缀
使用可参考

hbase RowFilter如何根据rowkey查询以及实例实现代码
http://www.aboutyun.com/forum.php?mod=viewthread&tid=8895



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条