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
比较数字:
相当于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 过滤器的更多相关文章
- HBase笔记--自定义filter
自定义filter需要继承的类:FilterBase 类里面的方法调用顺序 方法名 作用 1 boolean filterRowKey(Cell cell) 根据row key过滤row.如果需要 ...
- HBase笔记--filter的使用
HBASE过滤器介绍: 所有的过滤器都在服务端生效,叫做谓语下推(predicate push down),这样可以保证被过滤掉的数据不会被传送到客户端. 注意: 基于字符串的比较器,如 ...
- HBase笔记5(诊断)
阻塞急救: RegionServer内存设置太小: 解决方案: 设置Region Server的内存要在conf/hbase-env.sh中添加export HBASE_REGIONSERVER_OP ...
- HBase 笔记2
Hadoop 服务启动顺序: zookeeper ->journalnode->namenode -> zkfc -> datanode HBase Master WEB控制台 ...
- HBase学习之路 (十一)HBase的协过滤器
协处理器—Coprocessor 1. 起源 Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执 行求和.计数.排序等操作.比如,在旧版本的(<0.92)Hba ...
- HBase笔记:对HBase原理的简单理解
早些时候学习hadoop的技术,我一直对里面两项技术倍感困惑,一个是zookeeper,一个就是Hbase了.现在有机会专职做大数据相关的项目,终于看到了HBase实战的项目,也因此有机会搞懂Hbas ...
- [Java] JSP笔记 - Filter 过滤器
一.什么是Web过滤器 Servlet API 很久以前就已成为企业应用开发的基石,而 Servlet 过滤器则是对 J2EE 家族的相对较新的补充. Servlet 过滤器是可插入的 Web 组件, ...
- Hbase笔记——RowKey设计
一).什么情况下使用Hbase 1)传统数据库无法承载高速插入.大量读取. 2)Hbase适合海量,但同时也是简单的操作. 3)成熟的数据分析主题,查询模式确立不轻易改变. 二).现实场景 1.电商浏 ...
- 学习笔记_过滤器应用_1(分ip统计网站的访问次数)
分ip统计网站的访问次数 ip count 192.168.1.111 2 192.168.1.112 59 统计工作需要在所有资源之前都执行,那么就可以放到Filter中了. 我们这个过滤器不打算做 ...
随机推荐
- 想拥有一款钢铁侠Jarvis管家的软件吗?
漫威的<钢铁侠>电影很好看,里面钢铁侠的管家Jarvis,可以说非常酷.既能管理日常生活,还能组装钢铁战衣.跟随托尼出生入死,形影不离. 那么现实生活中,想不想拥有这一款软件?看看下面这个 ...
- CRC码计算及校验原理的最通俗诠释
5.3.2 循环冗余校验检错方案 奇偶校验码(PCC)只能校验一位错误,本节所要介绍的循环冗余校验码(CRC)的检错能力更强,可以检出多位错误. 1. CRC校验原理 CRC校验原理看起来比 ...
- win8.1系统出现C0000034正在应用更新操作怎么办
说来也奇怪,笔者Dell台式机前几天系统提示有更新,笔者对系统进行了更新,可昨天开机后,就出现了C0000034正在应用更新操作的情况,且电脑一直没反应,上网搜了一下帖子,发现复制粘贴的帖子好多,基本 ...
- VMware vCenter Server 6.5配置群集功能
虚拟数据中心是一种容器,其中包含用于操作虚拟机的完整功能环境所需要的全部清单对象.可以创建多个数据中心,以实际需求创建 . 群集是一组主机,将主机添加到群集时,主机的资源将成为群集资源的一部分,群集管 ...
- C# 获取对象 大小 Marshal.SizeOf (sizeof 只能在不安全的上下文中使用)
C# 能否获取一个对象所占内存的大小? 今日,在项目重构的时候忽然想到一个问题,一个类哪些成员的增加,会影响一个类所占内存的大小?C#有没有办法知道一个对象占多少内存呢? 第一个问题:很快想到是类的非 ...
- 【深入Java虚拟机】二 类加载与双亲委派
https://blog.csdn.net/zhangliangzi/article/details/51338291 -参考 双亲委派过程:当一个类加载器收到类加载任务时,立即将任务委派给它的父类 ...
- init_ir_技术实现篇
1. 中断的初始化 中断向量号是8位的,那么它一共有256项(0-255),所以中断描述符表最多只有256项,中断向量表也是256项. 对于不同的中断,在中断初始化和中断处理过程中,其处理方式是不一样 ...
- 写在开始前---web异常处理
分层项目中,有上层调用下层,每一层都可能出错,比如数据库连接,文件读写等异常.除了运行时程序的异常,还有业务逻辑的一些问题.发生异常需要做一定处理,既要让开发人员便于排查问题,又要让用户看到友好又便于 ...
- 《Spring实战》学习笔记-第五章:构建Spring web应用
之前一直在看<Spring实战>第三版,看到第五章时发现很多东西已经过时被废弃了,于是现在开始读<Spring实战>第四版了,章节安排与之前不同了,里面应用的应该是最新的技术. ...
- [LeetCode] Clone Graph 克隆无向图
Given a reference of a node in a connected undirected graph, return a deep copy (clone) of the graph ...