HBase 内置过滤器可以分为三类:分别是比较过滤器,专用过滤器和包装过滤器。但是我要介绍一下这个Filterlist:
如果有多个过滤条件需要我们做筛选,可以使用功能filterlist将他们组装到一起。当然,Hbase大数据情况下还是尽量做好rowkey的设计,少的加入这么多过滤.
如果是单个使用查询不用说直接get,但是有的时候查询条件不确定,然后没法比需要加入filter,使用scan,那么就需要加上范围了,但是这样有的时候又会有数据连续的rowykey热点问题,那么就需要我们提前建表的时候指定分区region,让数据均衡的分到不同的Region。
比如:select * from table a left join b on a.id=b.id where a.id=1 and a.name="lisan" and (a.age>15 or b.age >15 )
val FAMILY = Bytes.toBytes("info") // hbase列族
val list = new FilterList(Operator.MUST_PASS_ALL) //and过滤器
var or= new FilterList(Operator.MUST_PASS_ONE) //or过滤器
var filterList=new FilterList(Operator.MUST_PASS_ALL) //整合过滤
//使用scan的时候建议加上 如果不行就设置rowkey,不然扫描全表很慢的,表示开头是这个区间的
scan.withStartRow(Bytes.toBytes(parameter.get(IndexParams.BE