为了账号安全,请及时绑定邮箱和手机立即绑定

hbase rowkey 模糊查询

hbase rowkey 模糊查询

慕容708150 2018-10-01 12:12:08
比如我有一个20131213182734_1111113211_3623010004_3600001002_92233706494375782220000我想用正则表达式找出第一个"_"和第二个"_",之间,是否有匹配1132的数据。我使用rowFilter和RegexStringComparator组合查询regexStr ="\\d+_.*?"+key+".*?[_\\d+][3]?";regex = new RegexStringComparator(regexStr);rowFilter = new RowFilter(CompareOp.EQUAL ,regex);keyFilter.addFilter(rowFilter);其中无法完全匹配1111113211关键字。但是我试过该正则表达式,是没有问题的。难道hbase的RegexStringComparator不完全和java的表达式一样?比如我的javaString s ="20131213182734_1111113211_3623010004_3600001002_92233706494375782220000";String regex ="\\d+_.*?1111113211.*?[_\\d+][3]?";System.out.println(s.matches(regex));这样是可以通过的.但是放到hbase的RegexStringComparator就差不出来了。
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

不要用这个,hbase查询的时候可以设start和end。还有一个是可以根据offset查。用正规能搞死你,一定要提前设计好自己的key。否则数据海量的时候有你受的。

追问

我理解的关于模糊查询,只能用filter了

追答

主要看你数据量,小的时候filter也感觉不到,数据多并发高的时候就差别明显了


查看完整回答
反对 回复 2018-10-22
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

看看源码 debug下看看

查看完整回答
反对 回复 2018-10-22
  • 2 回答
  • 0 关注
  • 4480 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信