zoukankan      html  css  js  c++  java
  • HBase笔记6 过滤器

    过滤器

      过滤器是GET或者SCAN时过滤结果用的,相当于SQL的where语句

      HBase中的过滤器创建后会被序列化,然后分发到各个region server中,region server会还原过滤器并使用,这样scan中,不满足条件的结果不会返回客户端

      

      

    值过滤器: (针对所有列)

      创建valueFilter实例:    Filter filter=new ValueFilter(CompareFilter.CompareOp.EQUAL,new SubstringComparator("xxxx"));

          CompareFileter包含一个枚举类,CompareOp,包含以下值: 

          

          

          SubstringComparator是一个比较器,可以判断目标字符串是否包含所指定的字符串

    单列值过滤器:

        相当于mycnf:name like "%wang%"

        new SingleColumnValueFilter(Bytes.toBytes("my.cnf"),Bytes.toBytes("name"),CompareFilter.CompareOp.EQUAL,new SubstringComparator("wang"))

        指定了列族 mycnf  列 name

        注意:

          遍历结果集时需要判断结果是否包含需要的列,没有则丢弃  或   使用过滤器列表,将列族过滤器,列过滤器和值过滤器放入过滤器列表,同时进行过滤

    字符串完全匹配:

        相当于mycnf:name=wang

        new SingleColumnValueFilter(Bytes.toBytes("my.cnf"),Bytes.toBytes("name"),CompareFilter.CompareOp.EQUAL,newBinaryComparator("wang"))

    比较数字:

        相当于mycnf:age > 10

        new SingleColumnValueFilter(Bytes.toBytes("my.cnf"),Bytes.toBytes("name"),CompareFilter.CompareOp.GREATER,new BinaryComparator(Bytes.toBytes(10)));

    比较器:

      正则表达式比较器  RegexStringComparator  

      空值比较器 Null Comparator

      数字比较器 LongComparator

      比特位比较器 BitComparator

      字节数组前缀比较器 BinaryPrefixComparator

    分页过滤器:

      构造函数: PageFilter(long pagesize)       pagesize就是每页的记录数

    过滤器列表:

      构造函数1: FileterList(List<Filter> rowFilters)  多个过滤器组成的列表

      注意:过滤器列表添加的顺序不同,执行的结果也可能不同,原因在于执行顺序的不同,分页过滤器一定要放到最后

      构造函数2:FilterList(Operator operator,List<Filter> rowFilters) 

        Operator可选值  MUST_PASS_ALL   相当于所有条件之间用AND连接

                MUST_PASS_ONE   相当于所有条件之间用OR连接

      构造函数3:FilterList(Operator operator)  默认内部存在一个List,可以使用一个addFilter方法来实现添加过滤器 FilterList.addFilter(Filter filter)

    行键过滤器:

     行过滤器:

      相当于rowkey > row3

      new RowFilter(CompareFilter.CompareOp.GREATER,new BinaryComparator(Bytes.toBytes("row3")))

     多行范围过滤器:

      构造函数: MultiRowRangeFilter(List<RowRange> list)

      

     行键前缀过滤器:

      

        模糊行键过滤器:

      构造函数:  public FuzzyRowFilter(List<Pair<byte[],byte[]>> fuzzyKeysData)

         fuzzyKeysData是模糊匹配的表达式,包括行键  &  行键掩码

          行键 就是匹配的行键关键字

          行键掩码: 行键掩码长度必须与行键长度一致,需要模糊匹配的字符处标记为1,其他位置为0

        

      包含结尾过滤器:

        

      随机行过滤器:(对数据随机采样)

        

        遍历一行随机的数字小于0.5则保留

    列过滤器:

      列族过滤器:

        

      列过滤器:

        

      列前缀过滤器

        

      多列前缀过滤器:

        

      列键过滤器: 只获取列名

        构造函数: KeyOnlyFilter()

      首次列键过滤器

        构造函数:FirstKeyOnlyFilter()

      列名范围过滤器:

      

      

    单元格过滤器:

      时间戳过滤器:

        

    装饰过滤器

      跳转过滤器

        行中由一个列要跳过则整行跳过

        

      全匹配过滤器:

        若果一个过滤器filterKeyvalue()方法返回false,整体Scan会终止,即发现不符合结果时,终止,后面不查询

        

    如何在HBAse中使用过滤器:

        scan '表名',{FILETR => '过滤器'}

        例: scan 'table',{FILTER => "(PrefixFilter('row1'))"}

      

      

     

          

  • 相关阅读:
    java基础(7)--方法
    java基础(6)--数组和方法
    java基础(5)--流程控制结构
    java基础(4)--运算符及表达式
    java基础(2)--进制
    Java基础(1)--JDK,变量
    quartz(8)--其他
    spring AOP 概述(三) Advisor
    spring AOP 概述(二) Pointcut
    spring AOP 概述(一) Advice
  • 原文地址:https://www.cnblogs.com/zy1234567/p/10335169.html
Copyright © 2011-2022 走看看