hbase-2.4 過濾器

1、比較過濾器

行鍵過濾器 RowFilter
Filter filter1 = new RowFilter(CompareOperator.EQUAL, new BinaryComparator("q4000".getBytes()));
scan.setFilter(filter1);


列族過濾器 FamilyFilter
Filter filter1 = new FamilyFilter(CompareOperator.EQUA, new BinaryComparator(Bytes.toBytes(“info")));
scan.setFilter(filter1);


列過濾器 QualifierFilter
Filter filter = new QualifierFilter(CompareOperator.LESS_OR_EQUAL, new  BinaryComparator(Bytes.toBytes("name")));
scan.setFilter(filter1);


值過濾器 ValueFilter
Filter filter = new ValueFilter(CompareOperator.EQUAL,new BinaryComparator(Bytes.toBytes("love4000")));
scan.setFilter(filter1);


值過濾器 DependentColumnFilter-(ValueFilter的加強版)
Filter dependentColumnFilter = new DependentColumnFilter(
        Bytes.toBytes("info"),
        Bytes.toBytes("name"),
        false,
        CompareOperator.EQUAL,
        new BinaryPrefixComparator(Bytes.toBytes("love4000")));
scan.setFilter(filter1);
2、專用過濾器 

單列列值過濾器 SingleColumnValueFilter
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
        "info".getBytes(),
        "name".getBytes(),
        CompareOperator.EQUAL,
        new SubstringComparator("love3000"));
singleColumnValueFilter.setFilterIfMissing(true);
scan.setFilter(singleColumnValueFilter);


單列列值排除器 SingleColumnValueExcludeFilter
SingleColumnValueExcludeFilter 繼承自上面的 SingleColumnValueFilter,過濾行爲與其相反。


行鍵前綴過濾器 PrefixFilter
Filter filter = new PrefixFilter(Bytes.toBytes("q10"));
scan.setFilter(filter);



列名前綴過濾器 ColumnPrefixFilter
Filter filter = new ColumnPrefixFilter(Bytes.toBytes("name"));
scan.setFilter(filter);


分頁過濾器 PageFilter
Filter filter = new PageFilter(10);
scan.setFilter(filter);
scan.withStartRow(Bytes.toBytes("2"));
3、包裝過濾器

時間過濾器 TimestampsFilter
List<Long> list = new ArrayList<>();
list.add(1591191281943L);
TimestampsFilter timestampsFilter = new TimestampsFilter(list);
scan.setFilter(timestampsFilter);


SkipFilter過濾器
Filter filter1 = new ValueFilter(CompareOperator.NOT_EQUAL,
        new BinaryComparator(Bytes.toBytes("love4000")));
Filter filter2 = new SkipFilter(filter1);
scan.setFilter(filter2);


FilterList
以上都是講解單個過濾器的作用,當需要多個過濾器共同作用於一次查詢的時候,就需要使用 FilterList。FilterList 支持通過構造器或者 addFilter 方法傳入多個過濾器
List<Filter> filters = new ArrayList<Filter>();
 
Filter filter1 = new RowFilter(CompareOperator.GREATER_OR_EQUAL,
                               new BinaryComparator(Bytes.toBytes("XXX")));
filters.add(filter1);


 
Filter filter2 = new RowFilter(CompareOperator.LESS_OR_EQUAL,
                               new BinaryComparator(Bytes.toBytes("YYY")));
filters.add(filter2);


 
Filter filter3 = new QualifierFilter(CompareOperator.EQUAL,
                                     new RegexStringComparator("ZZZ"));
filters.add(filter3);


 
FilterList filterList = new FilterList(filters);
 
Scan scan = new Scan();
scan.setFilter(filterList);


列分頁過濾器:ColumnPaginationFilter(int limit,int off)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章