当前位置: 首页 > news >正文

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'))"}

 

  

  

 

 

 

 

      

 

转载于:https://www.cnblogs.com/zy1234567/p/10335169.html

相关文章:

  • Javascript Date原型方法
  • ECMASCript 2019可能会有哪些特性?
  • 625某电商网站数据库宕机故障解决实录(下)
  • JSP 开发环境搭建
  • SpringBoot三种启动方式
  • Python--day39--进程池的回调函数callback
  • IT人,给你一片天,你真的敢要么
  • JAVA编程技巧之如何实现HTTP的断点续传(原理篇)
  • VMware虚拟机提速10招
  • golang []byte转json和json转[]byte
  • C语言近程型(near)和远程型(far)的区别是什么?
  • 机器学习PAI全新功效——实时新闻热点Online Learning实践
  • 浅谈跨国网络传输
  • CNCF TOC现首张中国面孔,谁说云厂商是开源宿敌?
  • 微软私有云分享(R2)27维护窗口的使用
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • CentOS6 编译安装 redis-3.2.3
  • Flannel解读
  • java多线程
  • Making An Indicator With Pure CSS
  • Terraform入门 - 1. 安装Terraform
  • Vue.js源码(2):初探List Rendering
  • webpack+react项目初体验——记录我的webpack环境配置
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 利用jquery编写加法运算验证码
  • 面试遇到的一些题
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • HanLP分词命名实体提取详解
  • (2)STM32单片机上位机
  • (NSDate) 时间 (time )比较
  • (ros//EnvironmentVariables)ros环境变量
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (蓝桥杯每日一题)love
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (区间dp) (经典例题) 石子合并
  • (十三)Flask之特殊装饰器详解
  • (转) ns2/nam与nam实现相关的文件
  • (转)3D模板阴影原理
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .NET gRPC 和RESTful简单对比
  • .NET实现之(自动更新)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • @html.ActionLink的几种参数格式
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [bzoj1901]: Zju2112 Dynamic Rankings
  • [C++] 统计程序耗时
  • [dart学习]第四篇:函数
  • [HTML]Web前端开发技术18(HTML5、CSS3、JavaScript )HTML5 基础与CSS3 应用——喵喵画网页
  • [MYSQL]mysql常用操作命令