hbase scan超时设置_HBase学习之路 (六)过滤器
HBase学习之路 (六)过滤器
过滤器(Filter)
基础API中的查询操作在面对大量数据的时候是非常苍白的,这里Hbase提供了高级的查询方法:Filter。Filter可以根据簇、列、版本等更多的条件来对数据进行过滤,基于Hbase本身提供的三维有序(主键有序、列有序、版本有序),这些Filter可以高效的完成查询过滤的任务。带有Filter条件的RPC查询请求会把Filter分发到各个RegionServer,是一个服务器端(Server-side)的过滤器,这样也可以降低网络传输的压力。
要完成一个过滤的操作,至少需要两个参数。一个是抽象的操作符,Hbase提供了枚举类型的变量来表示这些抽象的操作符:LESS/LESS_OR_EQUAL/EQUAL/NOT_EUQAL等;另外一个就是具体的比较器(Comparator),代表具体的比较逻辑,如果可以提高字节级的比较、字符串级的比较等。有了这两个参数,我们就可以清晰的定义筛选的条件,过滤数据。
抽象操作符(比较运算符)
LESS <
LESS_OR_EQUAL <=
EQUAL =
NOT_EQUAL <>
GREATER_OR_EQUAL >=
GREATER >
NO_OP 排除所有
比较器(指定比较机制)
BinaryComparator 按字节索引顺序比较指定字节数组,采用 Bytes.compareTo(byte[])
BinaryPrefixComparator 跟前面相同,只是比较左端的数据是否相同
NullComparator 判断给定的是否为空
BitComparator 按位比较
RegexStringComparator 提供一个正则的比较器,仅支持 EQUAL 和非 EQUAL
SubstringComparator 判断提供的子串是否出现在 value 中
HBase过滤器的分类
比较过滤器
1、行键过滤器 RowFilter
Filter rowFilter = new RowFilter(CompareOp.GREATER, new BinaryComparator("95007".getBytes()));
scan.setFilter(rowFilter);
复制代码
1 public class HbaseFilterTest { 2 3 private static final String ZK_CONNECT_KEY = "hbase.zookeeper.quorum"; 4 private static final String ZK_CONNECT_VALUE = "hadoop1:2181,hadoop2:2181,hadoop3:2181"; 5 6 private static Connection conn = null; 7 private static Admin admin = null; 8 9 public static void main(String[] args) throws Exception {10 11 Configuration conf = HBaseConfiguration.create();12 conf.set(ZK_CONNECT_KEY, ZK_CONNECT_VALUE);13 conn = ConnectionFactory.createConnection(conf);14 admin = conn.getAdmin();15 Table table = conn.getTable(TableName.valueOf("student"));16 17 Scan scan = new Scan();18 19 Filter rowFilter = new RowFilter(CompareOp.GREATER, new BinaryComparator("95007".getBytes()));20 scan.setFilter(rowFilter);21 ResultScanner resultScanner = table.getScanner(scan);22 for(Result result : resultScanner) {23 List cells = result.listCells();24 for(Cell cell : cells) {25 System.out.println(cell);26 }27 }28 29 30 }
复制代码
运行结果部分截图
2、列簇过滤器 FamilyFilter
Filter familyFilter = new FamilyFilter(CompareOp.EQUAL, new BinaryComparator("info".getBytes()));
scan.setFilter(familyFilter);
View Code
3、列过滤器 QualifierFilter
Filter qualifierFilter = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator("name".getBytes()));
scan.setFilter(qualifierFilter);
View Code
4、值过滤器 ValueFilter
Filter valueFilter = new ValueFilter(CompareOp.EQUAL, new SubstringComparator("男"));
scan.setFilter(valueFilter);
View Code
5、时间戳过滤器 TimestampsFilter
List list = new ArrayList<>();
list.add(1522469029503l);
TimestampsFilter timestampsFilter = new TimestampsFilter(list);
scan.setFilter(timestampsFilter);
View Code
专用过滤器
1、单列值过滤器 SingleColumnValueFilter ----会返回满足条件的整行
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter( "info".getBytes(), //列簇 "name".getBytes(), //列CompareOp.EQUAL, new SubstringComparator("刘晨"));//如果不设置为 true,则那些不包含指定 column 的行也会返回singleColumnValueFilter.setFilterIfMissing(true);
scan.setFilter(singleColumnValueFilter);
View Code
2、单列值排除器 SingleColumnValueExcludeFilter
SingleColumnValueExcludeFilter singleColumnValueExcludeFilter = new SingleColumnValueExcludeFilter( "info".getBytes(), "name".getBytes(), CompareOp.EQUAL, new SubstringComparator("刘晨"));
singleColumnValueExcludeFilter.setFilterIfMissing(true);scan.setFilter(singleColumnValueExcludeFilter);
View Code
3、前缀过滤器 PrefixFilter----针对行键
PrefixFilter prefixFilter = new PrefixFilter("9501".getBytes());scan.setFilter(prefixFilter);
View Code
4、列前缀过滤器 ColumnPrefixFilter
ColumnPrefixFilter columnPrefixFilter = new ColumnPrefixFilter("name".getBytes());scan.setFilter(columnPrefixFilter);
复制代码
1 public class HbaseFilterTest2 { 2 3 private static final String ZK_CONNECT_KEY = "hbase.zookeeper.quorum"; 4 private static final String ZK_CONNECT_VALUE = "hadoop1:2181,hadoop2:2181,hadoop3:2181"; 5 6 private static Connection conn = null; 7 private static Admin admin = null; 8 9 public static void main(String[] args) throws Exception {10 11 Configuration conf = HBaseConfiguration.create();12 conf.set(ZK_CONNECT_KEY, ZK_CONNECT_VALUE);13 conn = ConnectionFactory.createConnection(conf);14 admin = conn.getAdmin();15 Table table = conn.getTable(TableName.valueOf("student"));16 17 Scan scan = new Scan();18 19 ColumnPrefixFilter columnPrefixFilter = new ColumnPrefixFilter("name".getBytes());20 21 scan.setFilter(columnPrefixFilter);22 ResultScanner resultScanner = table.getScanner(scan);23 for(Result result : resultScanner) {24 List cells = result.listCells();25 for(Cell cell : cells) {26 System.out.println(Bytes.toString(cell.getRow()) + "\t" + Bytes.toString(cell.getFamily()) + "\t" + Bytes.toString(cell.getQualifier())27 + "\t" + Bytes.toString(cell.getValue()) + "\t" + cell.getTimestamp());28 }29 }30 31 32 }33 34 35 }
复制代码
5、分页过滤器 PageFilter
hbase scan超时设置_HBase学习之路 (六)过滤器相关推荐
- hbase scan超时设置_hbase scan超时问题
下面是异常信息: 2018-11-08 16:55:52,361 INFO [main] org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl ...
- hbase scan超时设置_如何在优化生产环境的hbase
hbase 是hadoop生态圈的一员,在数据服务应用中具有举足轻重的地位,我们当然有必要掌握,hbase日常的大部分应用在数据查询服务中,因此查询的时候必然涉及到scan操作,因此在建表的时候就要对 ...
- hbase scan超时设置_深入浅出HBase系列(二)
今天来讲讲HBase读的过程: 1.HBase读过程详解 2.1影响HBase读取命令的参数 HBase读包含两种命令:get ,基于确切的RowKey去获取一行数据,通常被称之为随机点查:scan, ...
- hbase 修改表名_HBase学习——2.HBase原理
1.系统架构 1.1 图解 从HBase的架构图上可以看出,HBase中的组件包括Client.Zookeeper.HMaster.HRegionServer.HRegion.Store.MemSto ...
- netty socket超时设置_Netty 学习和进阶策略
背景 Netty 框架的特点 Netty 的一个特点就是入门相对比较容易,但是真正掌握并精通是非常困难的,原因有如下几个: 涉及的知识面比较广:Netty 作为一个高性能的 NIO 通信框架,涉及到的 ...
- ios7学习之路六(隐藏状态栏 )
方法一(代码设置): 现在ios7已经更改为透明,并且不占用屏幕高度.其中隐藏及显示的方法如下: 在uiviewcontroller的子类下,调用: if ([self respondsToSelec ...
- android学习之路(六)---- 图片加载库的优化、封装
封装Image-Loader 一.背景 universal-image-loader是一项伟大的开源项目,作者在其中运用到的软件工程解决办法让人印象深刻,在本篇文章的开篇,首先向uni ...
- 【HBase学习之四】HBase Client超时机制优化
生产服务遇到过一个故障,大体来说就是hbase集群故障,在没有设置hbase客户端超时的情况下,导致大量线程阻塞,从而影响了tomcat对其他服务请求的正常响应(504网关超时,超时率30%),需要规 ...
- 数据分析与爬虫实战视频——学习笔记(一)(python基础、urllib、超时设置、自动模拟HTTP请求、异常处理、浏览器伪装、代理服务器、新闻爬虫、淘宝登陆和图片爬取)
未经允许,请勿转载. 连载未完成状态 网址: [数据挖掘]2019年最新python3 数据分析与爬虫实战_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili ...
最新文章
- Srping Boot日志输出(转)
- netty web 容器_Netty 实战:如何编写一个麻小俱全的 web 框架
- svchost.exe启动服务原理
- php-ast 开源,PHP AST学习 - osc_ryjlu6z2的个人空间 - OSCHINA - 中文开源技术交流社区...
- 试了试Docker桌面应用自带的K8s集群,一个字“简单”
- 江苏大学计算机学院宋美如,姜震-江苏大学计算机科学与通信工程学院
- batchplot放到哪个文件夹_Batchplot使用技巧,转换CAD图纸格式并实现批量打印
- 抖音短视频内容理解和推荐算法
- 【POJ2559】Largest Rectangle in a Histogram(单调栈)
- android wifi 信道,WiFi不稳定经常断?手机WiFi信道小工具【图】_Android资讯_太平洋电脑网...
- Enco free2 固件降级详解
- 解决nginx 503 Service Temporarily Unavailable 方法
- 高考2021加3科目成绩查询,官方解读:2021新高考实施方案正式公布,首选科目按原始分计入总成绩!...
- python保存视频中的每一帧
- 关于网络渗透的过程以及感想记录
- Smoke Loader、AZORult木马通过虚假海啸警报传播到了日本
- python代码中 from . import ××× 是什么意思?
- pycharm创建django项目及开发初准备
- 数学建模笔记 day-03
- VS2005编译器选项
热门文章
- ubuntu16.04安装lua环境
- 数据操作string
- 多任务实现-协程(python 版)
- 使用idea本地运行mapreduce程序,控制台log4j日志没有打印出来,可以这样解决
- 【CCF】201709-1打酱油
- SQL Server2008创建约束图解 唯一性约束
- ReportViewer教程(11)-给报表特定的内容设置颜色
- [NLP]基于IMDB影评情感分析之BERT实战-测试集上92.24%
- php 文件上传mime 类型,PHP JAVA C上传文件如何准确判断文件类型-mime知识普及
- php实现中英文网站插件,php官网英文自动跳中文