Hbase的过滤器分类
Hbase的过滤器分类
1、比较过滤器
1.1、行键过滤器RowFilter
Filter filter1 = new RowFilter(CompareOp.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("row-22")));
scan.setFilter(filter1);
1.2、列族过滤器FamilyFilter
Filter filter1 = new FamilyFilter(CompareFilter.CompareOp.LESS, new BinaryComparator(Bytes.toBytes("colfam3")));
scan.setFilter(filter1);
1.3、列过滤器QualifierFilter
filter = new QualifierFilter(CompareFilter.CompareOp.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("col-2")));
scan.setFilter(filter1);
1.4、值过滤器ValueFilter
Filter filter = new ValueFilter(CompareFilter.CompareOp.EQUAL, new SubstringComparator(".4") );
scan.setFilter(filter1);
2、专用过滤器
2.1、单列值过滤器SingleColumnValueFilter
返回满足条件的整行
SingleColumnValueFilter filter = new SingleColumnValueFilter( Bytes.toBytes("colfam1"), Bytes.toBytes("col-5"), CompareFilter.CompareOp.NOT_EQUAL, new SubstringComparator("val-5"));
filter.setFilterIfMissing(true); //如果不设置为true,则那些不包含指定column的行也会返回
scan.setFilter(filter1);
2.2、SingleColumnValueExcludeFilter与SingleColumnValueFilter相反
2.3、前缀过滤器PrefixFilter
针对行键
Filter filter = new PrefixFilter(Bytes.toBytes("row1"));
scan.setFilter(filter1);
2.4、列前缀过滤器ColumnPrefixFilter
Filter filter = new ColumnPrefixFilter(Bytes.toBytes("qual2"));
scan.setFilter(filter1);
2.5、分页过滤器PageFilter
public static void main(String[] args) throws Exception {Configuration conf = HBaseConfiguration.create();conf.set("hbase.zookeeper.quorum", "spark01:2181,spark02:2181,spark03:2181");String tableName = "testfilter"; String cfName = "f1"; final byte[] POSTFIX = new byte[] { 0x00 }; HTable table = new HTable(conf, tableName); Filter filter = new PageFilter(3); byte[] lastRow = null; int totalRows = 0; while (true) { Scan scan = new Scan(); scan.setFilter(filter); if(lastRow != null){ //注意这里添加了POSTFIX操作,用来重置扫描边界 byte[] startRow = Bytes.add(lastRow,POSTFIX); scan.setStartRow(startRow); } ResultScanner scanner = table.getScanner(scan); int localRows = 0; Result result; while((result = scanner.next()) != null){ System.out.println(localRows++ + ":" + result); totalRows ++; lastRow = result.getRow(); } scanner.close(); if(localRows == 0) break; } System.out.println("total rows:" + totalRows); }
3、多种过滤条件使用
/*** 多种过滤条件的使用方法* @throws Exception*/@Testpublic void testScan() throws Exception{HTable table = new HTable(conf, "person_info".getBytes());Scan scan = new Scan(Bytes.toBytes("person_rk_bj_zhang_000001"), Bytes.toBytes("person_rk_bj_zhang_000002"));//前缀过滤器----针对行键Filter filter = new PrefixFilter(Bytes.toBytes("rk"));//行过滤器 ---针对行键ByteArrayComparable rowComparator = new BinaryComparator(Bytes.toBytes("person_rk_bj_zhang_000001"));RowFilter rf = new RowFilter(CompareOp.LESS_OR_EQUAL, rowComparator);/*** 假设rowkey格式为:创建日期_发布日期_ID_TITLE* 目标:查找 发布日期 为 2014-12-21 的数据*/rf = new RowFilter(CompareOp.EQUAL , new SubstringComparator("_2014-12-21_"));//单值过滤器1完整匹配字节数组new SingleColumnValueFilter("base_info".getBytes(), "name".getBytes(), CompareOp.EQUAL, "zhangsan".getBytes());//单值过滤器2 匹配正则表达式ByteArrayComparable comparator = new RegexStringComparator("zhang.");new SingleColumnValueFilter("info".getBytes(), "NAME".getBytes(), CompareOp.EQUAL, comparator);//单值过滤器3匹配是否包含子串,大小写不敏感comparator = new SubstringComparator("wu");new SingleColumnValueFilter("info".getBytes(), "NAME".getBytes(), CompareOp.EQUAL, comparator);//键值对元数据过滤-----family过滤----字节数组完整匹配FamilyFilter ff = new FamilyFilter(CompareOp.EQUAL , new BinaryComparator(Bytes.toBytes("base_info")) //表中不存在inf列族,过滤结果为空);//键值对元数据过滤-----family过滤----字节数组前缀匹配ff = new FamilyFilter(CompareOp.EQUAL , new BinaryPrefixComparator(Bytes.toBytes("inf")) //表中存在以inf打头的列族info,过滤结果为该列族所有行);//键值对元数据过滤-----qualifier过滤----字节数组完整匹配filter = new QualifierFilter(CompareOp.EQUAL , new BinaryComparator(Bytes.toBytes("na")) //表中不存在na列,过滤结果为空);filter = new QualifierFilter(CompareOp.EQUAL , new BinaryPrefixComparator(Bytes.toBytes("na")) //表中存在以na打头的列name,过滤结果为所有行的该列数据);//基于列名(即Qualifier)前缀过滤数据的ColumnPrefixFilterfilter = new ColumnPrefixFilter("na".getBytes());//基于列名(即Qualifier)多个前缀过滤数据的MultipleColumnPrefixFilterbyte[][] prefixes = new byte[][] {Bytes.toBytes("na"), Bytes.toBytes("me")};filter = new MultipleColumnPrefixFilter(prefixes);//为查询设置过滤条件scan.setFilter(filter);scan.addFamily(Bytes.toBytes("base_info"));//一行
// Result result = table.get(get);//多行的数据ResultScanner scanner = table.getScanner(scan);for(Result r : scanner){/**for(KeyValue kv : r.list()){String family = new String(kv.getFamily());System.out.println(family);String qualifier = new String(kv.getQualifier());System.out.println(qualifier);System.out.println(new String(kv.getValue()));}*///直接从result中取到某个特定的valuebyte[] value = r.getValue(Bytes.toBytes("base_info"), Bytes.toBytes("name"));System.out.println(new String(value));}table.close();}
喜欢就点赞评论+关注吧
感谢阅读,希望能帮助到大家,谢谢大家的支持!
Hbase的过滤器分类相关推荐
- Hbase的过滤器查询
hbase过滤器的比较运算符: LESS < LESS_OR_EQUAL <= EQUAL = NOT_EQUAL <> GREATER_OR_EQUAL >= GREA ...
- spark读Hbase数据集成Hbase Filter(过滤器)
文章目录 过滤器简介 spark 读Hbase集成Filter TableInputFormat 源码 代码示例 基于hbase版本2.3.5 过滤器简介 Hbase 提供了种类丰富的过滤器(filt ...
- Hbase关于过滤器对表的操作
Hbase关于过滤器对表的操作 使用过滤器对表操作 Hbase关于过滤器对表的操作 scan方法实例 过滤器有:行键过滤器.列族与列过滤器.值过滤器.时间过滤器.行键过滤器 行键过滤器 列族与列过滤器 ...
- HBase - Filter - 过滤器的介绍以及使用
博文作者:那伊抹微笑 csdn 博客地址:http://blog.csdn.net/u012185296 1 过滤器 HBase 的基本 API,包括增.删.改.查等. 增.删都是相对简单的操作,与传 ...
- HBase Filter 过滤器概述
HBase过滤器是一套为完成一些较高级的需求所提供的API接口. 过滤器也被称为下推判断器(push-down predicates),支持把数据过滤标准从客户端下推到服务器,带有 Filter 条件 ...
- 在Hbase使用过滤器(行键过滤器、列族与列过滤器、值过滤器)
本文介绍Hbase中的过滤器: 1.行键过滤器 2.列族与列过滤器 3.值过滤器 4.其他过滤器 格式如下: scan'表名',{FILTER=>过滤器(比较运算符,'比较器')"} ...
- 高效过滤器分类及特点
广州特耐苏净化设备有限公司详细介绍:高效过滤器有哪些分类 无挡板高效过滤器 无挡板过滤装置是用热溶胶替代有挡板过滤装置的铝铂对过滤材料开展隔开.因为没了挡板促使50毫米厚的无挡板型过滤装置可以做到15 ...
- HBase布隆过滤器简介
上面是一个布隆过滤器的简略工作图. 布隆过滤器的特点: --能判断该HFile一定没有要查找的数据,但不能判断有.每一个HFile都有一个布隆过滤器. 原理:会维护一个数组,一开始数组元素都是0. ...
- HBase常用过滤器
列值过滤器 SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes(HBRunner.DEFAULT_FA ...
- Hbase过滤器(Filter)汇总
Filter CompareFilter 是高层的抽象类,下面我们将看到他的实现类和实现类代表的各种过滤条件 RowFilter,FamliyFilter,QualifierFilter,ValueF ...
最新文章
- Pandas选择一列或者多列数据
- python官网下载步骤linux-linux下安装python
- python学多久可以接单-零基础小白多久能学会python
- JS系统库:预定义对象(内建对象)
- 请问运行py文件的时候怎么样可以不让那个黑框一闪...
- 智慧交通day02-车流量检测实现05:小车匀加速案例
- Meta http-equiv 大全
- c语言char a[10]; sprintf(a,%d,n);,c语言输入输出的一些细节
- Scikit-learn:主要模块和基本使用方法
- (原创)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)
- Kafka 源码环境搭建
- word文档通配符换行_Word怎么批量删除分隔符
- CentOS 7 安装 MariaDB 10.1
- 安卓虚拟摄像头_iPhone 的“第四颗摄像头”位置,为什么给了激光雷达?
- 《中庸》开宗明义:天命之谓性,率性之谓道,修道之谓教。
- 银行账户存储系统C++
- 标签无效 /zabbix_export/date: YYYY-MM-DDThh:mm:ssZ 预计。
- sql注入--基本注入语句学习笔记
- 【智能物流】200亿规模的制造企业,如何规划供应链物流体系?
- EasyNVR H5无插件摄像机直播解决方案前端解析之:videojs初始化的一些样式处理
热门文章
- 手把手教你学五笔打字输入法之1(如何快速巧记五笔字型字根表篇)
- 分数乘法怎么用计算机计算,分数乘法计算与简单运用
- [NOI 2014]起床困难综合症
- 如何快捷修改eclipse黑色背景和字体颜色设置?
- 体验与对比新版EBS gp3 vs gp2
- Word设置每页不同的页眉/修改或去掉页眉横线/页眉标题在横线上下方的设置
- Python就业方向都有什么?该如何选择?
- word压缩软件,免费
- 计算机快捷键换行,excel换行快捷键 excel中自动换行的快捷键是什么
- Blazor The specified deps.json \bin\Debug\net5.0\BlazorWebApp.deps.json] does not exist