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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx: