过滤器

  过滤器是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'))"}

  

  

 

      

HBase笔记6 过滤器的更多相关文章

  1. HBase笔记--自定义filter

    自定义filter需要继承的类:FilterBase 类里面的方法调用顺序   方法名 作用 1 boolean filterRowKey(Cell cell) 根据row key过滤row.如果需要 ...

  2. HBase笔记--filter的使用

    HBASE过滤器介绍: 所有的过滤器都在服务端生效,叫做谓语下推(predicate push down),这样可以保证被过滤掉的数据不会被传送到客户端. 注意:        基于字符串的比较器,如 ...

  3. HBase笔记5(诊断)

    阻塞急救: RegionServer内存设置太小: 解决方案: 设置Region Server的内存要在conf/hbase-env.sh中添加export HBASE_REGIONSERVER_OP ...

  4. HBase 笔记2

    Hadoop 服务启动顺序: zookeeper ->journalnode->namenode -> zkfc -> datanode HBase Master WEB控制台 ...

  5. HBase学习之路 (十一)HBase的协过滤器

    协处理器—Coprocessor 1. 起源 Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执 行求和.计数.排序等操作.比如,在旧版本的(<0.92)Hba ...

  6. HBase笔记:对HBase原理的简单理解

    早些时候学习hadoop的技术,我一直对里面两项技术倍感困惑,一个是zookeeper,一个就是Hbase了.现在有机会专职做大数据相关的项目,终于看到了HBase实战的项目,也因此有机会搞懂Hbas ...

  7. [Java] JSP笔记 - Filter 过滤器

    一.什么是Web过滤器 Servlet API 很久以前就已成为企业应用开发的基石,而 Servlet 过滤器则是对 J2EE 家族的相对较新的补充. Servlet 过滤器是可插入的 Web 组件, ...

  8. Hbase笔记——RowKey设计

    一).什么情况下使用Hbase 1)传统数据库无法承载高速插入.大量读取. 2)Hbase适合海量,但同时也是简单的操作. 3)成熟的数据分析主题,查询模式确立不轻易改变. 二).现实场景 1.电商浏 ...

  9. 学习笔记_过滤器应用_1(分ip统计网站的访问次数)

    分ip统计网站的访问次数 ip count 192.168.1.111 2 192.168.1.112 59 统计工作需要在所有资源之前都执行,那么就可以放到Filter中了. 我们这个过滤器不打算做 ...

随机推荐

  1. C语言 · 关联账户

    标题:关联账户 为增大反腐力度,某地警方专门支队,对若干银行账户展开调查. 如果两个账户间发生过转账,则认为有关联.如果a,b间有关联, b,c间有关联,则认为a,c间也有关联. 对于调查范围内的n个 ...

  2. 电子商务(电销)平台中订单模块(Order)数据库设计明细(转)

    以下是自己在电子商务系统设计中的订单模块的数据库设计经验总结,而今发表出来一起分享,如有不当,欢迎跟帖讨论~ 订单表 (order)|-- 自动编号(order_id, 自增长主键)|-- 订单单号( ...

  3. SQLServer截取字符串常用函数

    SQL Server中一共提供了三个字符串截取函数:LEFT().RIGHT().SUBSTRING(). 一.LEFT()函数 函数说明如下: 语法:LEFT(character,integer). ...

  4. Maven-设置默认Java编译版本

    有两种方式,一种针对项目,一种针对全局 针对项目,需要在pom.xml中添加如下配置: <build> <plugins> <plugin> <groupId ...

  5. Android打开各种类型的文件方法总结

    很简单,通过调用系统的intent,我们可以打开各种文件,不熟悉的朋友可以了解下action.datatype.uri的相关知识. 通用方法如下: public static Intent openF ...

  6. linux cent os 6.5安装Nginx

    1.下载相关组件 yum install -y gcc gcc-c++ 安装C/C++编译器 wget http://sourceforge.net/projects/pcre/files/pcre/ ...

  7. python中通过字符串名来调用函数

    强调:eval()函数功能虽然强大,但是也很危险,这个方法需要慎重使用. 利用python中的内置函数 eval() ,函数说明: def eval(*args, **kwargs): # real ...

  8. 公开的免费WebService接口分享

    天气预报Web服务,数据来源于中国气象局 Endpoint  Disco  WSDL IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据) Endpoint  Disco  WSDL 随机英文 ...

  9. linux执行python命令后permission denied

    linux下执行python后显示被拒绝问题定位: 1.检查下要执行的文件的权限是否存在执行权限,否则执行chmod命令赋予权限: 2.若赋予权限后仍然显示没有权限,检查下执行的python文件是否有 ...

  10. 【Zookeeper系列】ZooKeeper管理分布式环境中的数据(转)

    原文地址:https://www.cnblogs.com/sunddenly/p/4092654.html 引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它 ...