分享

hbase热点解决。

ld512870 发表于 2017-5-10 13:33:08 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 5101
从网上搜了一下,hbase的热点解决就是预分区+散列值。这样是比较好的将数据都散列分布到各个region了。但是这种时候应该怎么查询呢?直接根据rowkey这个倒是好说。只要有规则生成,就可以查询。但是,如果是scan这种呢?应该怎么查询呢?求大神解惑。

已有(1)人评论

跳转到指定楼层
tntzbzc 发表于 2017-5-10 13:43:24
楼主说的应该是根据rowkey进行范围查询吧。
row因为要散列,所以前面是没有规律的,比如rowkey
随机值+时间
想根据时间来查询范围,这时候直接rowkey就不行了。
其实有一个RowFilter可以实现,比如
提取rowkey201705以后的数据,可以使用下面
Filter filter = new RowFilter(CompareFilter.CompareOp.GREATER,new SubstringComparator("201705"));

如果是等于
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new SubstringComparator("201705"));

如果是201705以前的数据
Filter filter = new RowFilter(CompareFilter.CompareOp.LESS,new SubstringComparator("201705"));


更多如下表

Operator
Description
LESS
小于
LESS_OR_EQUAL
小于等于
EQUAL
等于
NOT_EQUAL
不等于
GREATER_OR_EQUAL
大于等于
GREATER
大于
NO_OP
排除所有



回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条