业务应用上需要按字段的值过滤,值若是数字需要比较大小,若是字符串需要模糊匹配,或者是按枚举的清单过滤,至于查找的字段只需要列举出来就行了。
HBase 可以实现过滤row,family,Qualifier的名字,也可以过滤所有的value值
比较法有:字符串完全匹配,完全不匹配,按字母排序比大小,正则表达式等,
也可以实现按某个family,Qualifier指定的value过滤
实现按所有raw的前缀过滤,按family的Qualifier名字的前缀过滤,或实现family的Qualifier名字多种前缀过滤,
也可以实现只获取前几行
也可以用FilterList实现多个条件共同作用
几大Filters
1、Comparision Filters 比较过滤器
1.1 RowFilter (过滤row,例如RowFilter(CompareOp.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("pbrry"))),返回按字母排序在pbrry之前的那些row的内容)
1.2 FamilyFilter (过滤的对象是family的名字,如FamilyFilter(CompareOp.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("jbrry"))),返回按字母排序在jbrry之前的那些family对应的Qualifier,value)
1.3 QualifierFilter (过滤的对象是Qualifier的名字,如QualifierFilter(CompareOp.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("jbrry"))),返回按字母排序在jbrry之前的那些Qualifier对应的value)
1.4 ValueFilter (过滤的对象是所有的value,与SingleColumnValueFilter不同的是SingleColumnValueFilter过滤指定的列)
1.5 DependentColumnFilter (该过滤器有两个参数:family和Qualifier,尝试找到该列所在的每一行,并返回该行具有相同时间戳的全部键值对。如果某一行不包含指定的列,则该行的任何键值对都不返回,该过滤器还可以有一个可选的布尔参数-如果为true,从属的列不返回;该过滤器还可以有两个可选的参数--一个比较操作符和一个值比较器,用于family和Qualifier
的进一步检查,如果从属的列找到,其值还必须通过值检查,然后就是时间戳必须考虑)
2、Dedicated Filters 专用过滤器
2.1 SingleColumnValueFilter (过滤某family的Qualifier的value,value >,<,>=,<=,=,<>某给定的值,通常用在value是数字的情况下,=&#x