RowFilter 筛选出 匹配的行键 FamilyFilter筛选出 匹配的列族 QualifierFilter筛选出 匹配的列限定符 ValueFilter筛选出 匹配的值 专用过滤器SingleColumnValueFilter与 ValueFilter 类似,但是可以值针对某个列限定符里面的值进行过滤。 SingleColumnValueExcludeFilter与SingleColumnValueFilter 的不同之处在于,不返回指定的列限定符 所有的列 PrefixFilter匹配到的行键前缀的行会被返回。当遇到比前缀大的行时,扫描结束 PageFilter从起始行键扫描,返回指定的条数。
翻页的时候客户端需要记录上次返回的会有一个行键,下次作为起始行键。
起始行键是包含在返回结果中的,如果不想包含起始行键,在行键后拼接一个0字节的数组。 [mw_shl_code=bash,true]scan.setStopRow(Bytes.padTail(someBytes, 0));
// 或
scan.setStopRow(Bytes.add(someBytes, new byte[0]));
[/mw_shl_code]
KeyOnlyFilter这个过滤器的功能就是只返回每行的行键,值全部为空,这对于只关注于行键的应用场景来说非常合适,这样忽略掉其值就可以减少传递到客户端的数据量,能起到一定的优化作用; FirstKeyOnlyFilter只返回第一个列限定符所在的列 FirstKeyValueMatchingQualifiersFilter通过设置一组需要匹配的列,只要匹配到任意一个列就会停止这一行的扫描操作进行下一行的扫描。 InclusiveStopFilterscan 的时候开始行被包含在内,但是结束行被排除在外,使用该过滤器,会返回结束行。 TimestampsFilter获取指定的时间戳集合
scan.setTimeRange() 可以指定时间戳范围 ColumnCountGetFilter限制 Get 操作返回的列数。
如果某一个行的列数超过限定的值,会停止扫描,所以不适合 scan 使用 ColumnPaginationFilterPageFilter 是基于行分页,该过滤器是基于列分页 ColumnPrefixFilter与PrefixFilter类似,该过滤器可以前缀匹配 列限定符 RandomRowFilter根据设定的概率随机选择返回的行。
过滤器内部调用 Java 的随机方法产生一个随机数,如果产生的随机数小于设定的概率则包含改行,否则排除。
如果设定概率小于0,则全部排除,如果设置概率大于1,则全部包含 ColumnRangeFilter根据指定的列的范围进行筛选 MultipleColumnPrefixFilter过个列前缀过滤,构造方法是一个前缀数组 MultiRowRangeFilter多个行键过滤,构造方法是一个范围列表
FuzzyRowFilter
FuzzyRowFilter 是对 行键模糊匹配 的优化版。是扫描更加快速。
附加过滤器SkipFilter该过滤器用于包装其它过滤器,匹配的过滤器,被该过滤器包装后会跳过。相当于 不等于 WhileMatchFilter该过滤器用于包装其它过滤器,返回从匹配开始,第一次遇到不匹配的之前的匹配到的数据。 FilterList多个过滤器可以组合使用,组合情况有一下两种 [mw_shl_code=bash,true]public static enum Operator {
/** 所有过滤器都必须满足 */
MUST_PASS_ALL,
/** 只用满足其中一个就行 */
MUST_PASS_ONE
}[/mw_shl_code]
只返回满足条件的行键信息
[mw_shl_code=bash,true]FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
filterList.addFilter(new PrefixFilter(Bytes.toBytes("dev")));
filterList.addFilter(new KeyOnlyFilter());[/mw_shl_code]
|