HBase内置过滤器java api的总结
1、RowFilter:筛选出匹配的所有的行(使用过)
//rowkey 等于 test|id9
Filter filter=new RowFilter(CompareOperator.EQUAL,new BinaryComparator(Bytes.toBytes("test|id9")));
2、PrefixFilter:筛选出具有特定前缀的行健的数据
//rowkey 以test开头
Filter filter=new PrefixFilter(Bytes.toBytes("test"));
3、KeyOnlyFilter:只返回每行的行健
//只返回每行的行键,但值全是空
Filter filter=new KeyOnlyFilter();
4、RandomRowFilter:按照一定的几率来返回随机的结果集
//返回随机的数据
Filter filter=new RandomRowFilter(0.5f);
5、InclusiveStopFilter:扫描的时候,我们可以设置一个开始行键和一个终止行键,默认情况下,这个行键的返回是前闭后开区间,即包含起始行,但不包含终止行,如果我们想要同时包含起始行和终止行
//遇到rowkey等于test|id4停止查询
Filter filter=new InclusiveStopFilter(Bytes.toBytes("test|id4"));
6、FirsterKeyOnlyFilter:返回的结果集中只包含第一列的数据它在找到每行的第一列之后会停止扫描
//筛选出第一个每个第一个单元格
Filter filter=new FirstKeyOnlyFilter();
7、ColumnsPrefixFilter:按照列名的前缀来筛选单元格,如果我们想要对返回的列的前缀加以限制的话,可以使用这个过滤器
//列名以ss开头
Filter filter=new ColumnPrefixFilter(Bytes.toBytes("ss"));
8、ValueFilter:按照具体的值来筛选单元格
//值中包含one的记录
Filter filter=new ValueFilter(CompareOperator.EQUAL,new SubstringComparator("one"));
9、ColumnsCountGetFilter:这个过滤器来返回每行最多返回多少列,并在遇到一行的列数超过我们所设置的限制值的时候,结束扫描操作
Filter ccf=new ColumnCountGetFilter(2);//OK如果突然发现一行中的列数超过设定的最大值时,整个扫描操作会停止
10、SingleColumnValueFilter:用一列的值决定这一行的数据是否被过滤
SingleColumnValueFilter scvf=new SingleColumnValueFilter(
Bytes.toBytes("colfam1"),
Bytes.toBytes("qual2"),CompareFilter.CompareOp.NOT_EQUAL,new SubstringComparator("BOGUS"));
scvf.setFilterIfMissing(false);
scvf.setLatestVersionOnly(true);//OK
11、SingColumnValueExcludeFilter:这个与10种的过滤器唯一的区别就是,作为筛选条件的列的不会包含在返回的结果中。
12、SkipFilter:这是一种附加过滤器,其与ValueFilter结合使用,如果发现一行中的某一列不符合条件,那么整行就会被过滤掉
Filter skf=new SkipFilter(vf);//OK发现某一行中的一列需要过滤时,整个行就会被过滤掉
13、WhileMatchFilter:如果你想要在遇到某种条件数据之前的数据时,就可以使用这个过滤器;当遇到不符合设定条件的数据的时候,整个扫描也就结束了
Filter wmf=new WhileMatchFilter(rf);//OK类似于Pythonitertools中的takewhile
14、FilterList:用于综合使用多个过滤器(使用过)
List<Filter>filters=new ArrayList<Filter>();filters.add(rf);
filters.add(vf);FilterList fl=?new FilterList(FilterList.Operator.MUST_PASS_ALL,filters);//OK综合使用多个过滤器,AND和OR两种关系
通过Filter获取结果集案例
FilterList filterList=new FilterList();
Filter filter=new RowFilter(CompareOperator.EQUAL,new BinaryComparator(Bytes.toBytes("test|id9")));
filterList.addFilter(filter);ResultScanner www = HBaseUtil.getScanner("www",filterList);for (Result re:www){for(Cell kv:re.rawCells()){System.out.println("====="+kv.toString());System.out.println("列族:"+Bytes.toString(kv.getFamilyArray(),kv.getFamilyOffset(),kv.getFamilyLength()));System.out.println("RowKey:"+Bytes.toString(kv.getRowArray(),kv.getRowOffset(),kv.getRowLength()));System.out.println("列名:"+Bytes.toString(kv.getQualifierArray(),kv.getQualifierOffset(),kv.getQualifierLength()));System.out.println("值:"+Bytes.toString(kv.getValueArray(),kv.getValueOffset(),kv.getValueLength()));System.out.println("=================================================================================");}
}
HBase内置过滤器java api的总结相关推荐
- hbase java api count_HBase内置过滤器java api的总结
1.RowFilter:筛选出匹配的所有的行(使用过)//rowkey 等于 test|id9 Filter filter=new RowFilter(CompareOperator.EQUAL,ne ...
- Hbase 内置过滤器
HBase为筛选数据提供了一组过滤器,通过这个过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作,也就是说过滤器最终能够筛选的数据能够细化到具体的一个存储单元格上(由行 ...
- HBase内置过滤器的一些总结
HBase为筛选数据提供了一组过滤器,通过这个过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作,也就是说过滤器最终能够筛选的数据能够细化到具体的一个存储单元格上(由行 ...
- Hbase系列---内置过滤器
HBase为筛选数据提供了一组过滤器,通过这个过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作,也就是说过滤器最终能够筛选的数据能够细化到具体的一个存储单元格上(由行 ...
- Spring Security的内置过滤器是如何维护的?
Spring Security中的内置过滤器顺序是怎么维护的?我想很多开发者都对这个问题感兴趣.本篇我和大家一起探讨下这个问题. HttpSecurity包含了一个成员变量FilterOrderReg ...
- 如何将小程序内置非promise API转换为promise对象(风袖小程序的学习)
非常重要,便于项目大局观,使用es7的 async和await 如何将小程序内置非promise API转换为promise 这里是我封装的一个wx.request函数如何将wx.request转换成 ...
- angularJS 组件及内置过滤器
组件化<component> 组件化是将页面中一部分UI封装起来进行重复使用,UI中的数据可以是不同的,甚至组件中可以对UI进行适当的业务逻辑处理,如链接跳转.数据运算等等 组件语法结构如 ...
- apache shiro内置过滤器 标签 注解
内置过滤器 anon(匿名) org.apache.shiro.web.filter.authc.AnonymousFilter authc(身份验证) org.apache.shiro ...
- Django中的内置过滤器
Django的内置过滤器
最新文章
- R语言sunburst图(sunburst plot)可视化实战:使用sunburstR包和ggplot2包进行可视化
- java_ant详解(转载)
- jndi连接池链接mysql_使用容器提供的数据库连接池--JNDI用法
- 后Hadoop时代的大数据技术思考:数据即服务
- Jenkins启动时提示:Starting Jenkins Jenkins requires Java8 or later, but you are running 1.7.0
- 阿里P8架构师谈:架构设计经验汇总
- python课程_大整理!程序员最爱的13个免费Python课程
- ip在线代理联合早报_我所资深代理人马俪雯线上参加”中国医药设备工程协会年会”...
- mysql 查看当前连接及修改连接数
- centos7查看设置IP地址
- oracle返回当前日期函数,oracle 日期时间函数使用总结
- 键盘连接计算机接口,终于明白电脑如何连接键盘
- Email应用,SMTP协议,POP协议
- 操作系统之调度 (十) --- 处理机调度、高级调度、中级调度、低级调度...
- 用Unity同时开发【微信小游戏】【安卓】【IOS】游戏#6.2 WebSocket通信
- 基于maven自动构建和部署工具-JDeploy
- 程序员福利:当编程语言都变成女孩子
- Android获取手机MAC地址
- Qt 使用布局管理器失效或者异常
- Netgear R6400v2 堆溢出漏洞分析与利用
热门文章
- Ubuntu搭建嵌入式开发(交叉编译)环境-转
- java 送参数_关于java:如何以编程方式发送带参数的HTTP请求?
- 【iOS】TouchDown、TouchDownRepeat 和 TouchCancel 的区别
- 蓝桥杯 ALGO-86 算法训练 矩阵乘法
- 蓝桥杯 ALGO-21算法训练 装箱问题(动态规划,01背包)
- python openpyxl创建excel文件-python之openpyxl生成excel文件
- mongodb修改最大连接数
- 部署Zipkin分布式性能追踪日志系统的操作记录
- JDBC连接Informix IDS
- mysql 优化 - like模糊查询优化