hbase 常用过滤器filter--------------------------有这篇文章就够了,舍我其谁!!!!

本文主要是介绍hbase 常用过滤器filter--------------------------有这篇文章就够了,舍我其谁!!!!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

目录

1.1 过滤器的作用

1.2 rowkeyFilter

1.3 prefixfilter

1.4 firstKeyOnlyFilter

1.5 valueFilter

1.7 keyonlyFilter

1.8 randomRowFilter

1.9 inclusiveStopFilter

1.10 columnPrefixFilter

1.11 columnCountGetFilter

1.12 singleColumnValueFilter

1.13 singleColumnValueExcludeFilter

1.14 skipFilter

1.15 whileMatchFilter

1.16 filterList


1.1 过滤器的作用

过滤器可以根据列族、列、版本等更多的条件来对数据进行过滤,高效地完成查询过滤的任务,带有过滤器条件的RPC查询请求会把过滤器分发到各个 regionServer,达到降低网络传输压力的目的。通过提供一组过滤器,hBase可以对hBase中数据的多个维度进行筛选,最终筛选出来的数据能够细化到具体的一个存储单元格上。 通常来说,通过行键和值来筛选数据的应用场景较多,其中应用得比较多的过滤器包括RowFilter、PrefixFilter、FirstKeyOnlyFilter和ValueFilter。

1.2 rowkeyFilter

1. RowFilter:筛选出匹配的所有的行,对于这个过滤器的应用场景,是非常直观的,使用BinaryComparator可以筛选出具有某个行键的行,或者通过改变比较运算符来筛选出符合某一条件的多条数据,以下就是筛选出行键为row0的一行数据。

Filter mFilter = new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("row0")));

1.3 prefixfilter

PrefixFilter:筛选出具有特定前缀的行键的数据,这个过滤器所实现的功能其实也可以由RowFilter结合RegexComparator来实现,不过这里提供了一种更为简便的方法,以下过滤器将筛选出行键以prefix为前缀的所有的行。

Filter mFilter = new PrefixFilter(Bytes.toBytes("prefix"));

1.4 firstKeyOnlyFilter

FirstKeyOnlyFilter:如果你只想返回的结果集中只包含第一列的数据,那么这个过滤器能够满足你的要求。它在找到每行的第一列之后会停止扫描,从而使扫描的性能也得到了一定的提升。

Filter mFilter = new FirstKeyOnlyFilter();

1.5 valueFilter

 ValueFilter:按照具体的值来筛选单元格的过滤器,这会把一行中值不能满足的单元格过滤掉,对于每一行的一个列,如果其对应的值不包含row_value,那么这个列将不会返回到客户端。

Filter mFilter = new ValueFilter(CompareFilter.CompareOp.EQUAL, new SubstringComparator("row_value"));

1.7 keyonlyFilter

只返回每行的行健

Filter kof=new KeyOnlyFilter();//OK 返回所有的行,但值全是空

1.8 randomRowFilter

RandomRowFilter:按照一定的几率来返回随机的结果集
Filter rrf=new RandomRowFilter((float) 0.8);//OK随机选出一部分的行

1.9 inclusiveStopFilter

InclusiveStopFilter:扫描的时候,我们可以设置一个开始行键和一个终止行键,默认情况下,这个行键的返回是前闭后开区间,即包含起始行,但不包含终止行,如果我们想要同时包含起始行和终止行,使用inclusivestopfilter
Filter isf=new InclusiveStopFilter(Bytes.toBytes("row1"));//OK包含了扫描的上限在结果之内

1.10 columnPrefixFilter

ColumnsPrefixFilter:按照列名的前缀来筛选单元格,如果我们想要对返回的列的前缀加以限制的话,可以使用这个过滤器
Filter cpf=new ColumnPrefixFilter(Bytes.toBytes("qual1"));//OK筛选出前缀匹配的列

1.11 columnCountGetFilter

ColumnsCountGetFilter:这个过滤器来返回每行最多返回多少列,并在遇到一行的列数超过我们所设置的限制值的时候,结束扫描操作
Filter ccf=new ColumnCountGetFilter(2);//OK如果突然发现一行中的列数超过设定的最大值时,整个扫描操作会停止

1.12 singleColumnValueFilter

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

1.13 singleColumnValueExcludeFilter

SingColumnValueExcludeFilter:这个与10种的过滤器唯一的区别就是,作为筛选条件的列的不会包含在返回的结果中。

1.14 skipFilter

SkipFilter:这是一种附加过滤器,其与ValueFilter结合使用,如果发现一行中的某一列不符合条件,那么整行就会被过滤掉
Filter skf=new SkipFilter(vf);//OK发现某一行中的一列需要过滤时,整个行就会被过滤掉

1.15 whileMatchFilter

WhileMatchFilter:如果你想要在遇到某种条件数据之前的数据时,就可以使用这个过滤器;当遇到不符合设定条件的数据的时候,整个扫描也就结束了
Filter wmf=new WhileMatchFilter(rf);//OK类似于Pythonitertools中的takewhile

 

1.16 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两种关系

除此以外,hBase还提供了FilterList用于综合使用多个过滤器,通过指定FilterList.Operator.MUST_PASS_ONE和FilterList.Operator.MUST_PASS_ALL,来分别设置必须通过所有过滤器或者仅需通过其中一个过滤器,FilterList可以嵌套使用FilterList,面对复杂的查询需求也能够得心应手。

http://www.sohu.com/a/208860675_505901

https://www.cnblogs.com/kaiwen03/p/9848037.html

 

这篇关于hbase 常用过滤器filter--------------------------有这篇文章就够了,舍我其谁!!!!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1013309

相关文章

Java实现字符串大小写转换的常用方法

《Java实现字符串大小写转换的常用方法》在Java中,字符串大小写转换是文本处理的核心操作之一,Java提供了多种灵活的方式来实现大小写转换,适用于不同场景和需求,本文将全面解析大小写转换的各种方法... 目录前言核心转换方法1.String类的基础方法2. 考虑区域设置的转换3. 字符级别的转换高级转换

Python使用Matplotlib和Seaborn绘制常用图表的技巧

《Python使用Matplotlib和Seaborn绘制常用图表的技巧》Python作为数据科学领域的明星语言,拥有强大且丰富的可视化库,其中最著名的莫过于Matplotlib和Seaborn,本篇... 目录1. 引言:数据可视化的力量2. 前置知识与环境准备2.1. 必备知识2.2. 安装所需库2.3

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

MyBatis配置文件中最常用的设置

《MyBatis配置文件中最常用的设置》文章主要介绍了MyBatis配置的优化方法,包括引用外部的properties配置文件、配置外置以实现环境解耦、配置文件中最常用的6个核心设置以及三种常用的Ma... 目录MyBATis配置优化mybatis的配置中引用外部的propertis配置文件⚠️ 注意事项X

JavaWeb 中的 Filter组件详解

《JavaWeb中的Filter组件详解》本文详细介绍了JavaWeb中的Filter组件,包括其基本概念、工作原理、核心接口和类、配置方式以及常见应用示例,Filter可以实现请求预处理、响应后... 目录JavaWeb 中的 Filter 详解1. Filter 基本概念1.1 什么是 Filter1.

一文详解Java常用包有哪些

《一文详解Java常用包有哪些》包是Java语言提供的一种确保类名唯一性的机制,是类的一种组织和管理方式、是一组功能相似或相关的类或接口的集合,:本文主要介绍Java常用包有哪些的相关资料,需要的... 目录Java.langjava.utiljava.netjava.iojava.testjava.sql

Springmvc常用的注解代码示例

《Springmvc常用的注解代码示例》本文介绍了SpringMVC中常用的控制器和请求映射注解,包括@Controller、@RequestMapping等,以及请求参数绑定注解,如@Request... 目录一、控制器与请求映射注解二、请求参数绑定注解三、其他常用注解(扩展)四、注解使用注意事项一、控制

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

C# 空值处理运算符??、?. 及其它常用符号

《C#空值处理运算符??、?.及其它常用符号》本文主要介绍了C#空值处理运算符??、?.及其它常用符号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、核心运算符:直接解决空值问题1.??空合并运算符2.?.空条件运算符二、辅助运算符:扩展空值处理

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc