HBase分布式数据库技术与应用 课件8项目五-任务二-HBase 过滤器详解_第1页
HBase分布式数据库技术与应用 课件8项目五-任务二-HBase 过滤器详解_第2页
HBase分布式数据库技术与应用 课件8项目五-任务二-HBase 过滤器详解_第3页
HBase分布式数据库技术与应用 课件8项目五-任务二-HBase 过滤器详解_第4页
HBase分布式数据库技术与应用 课件8项目五-任务二-HBase 过滤器详解_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《HBase分布式数据库实战》HBase分布式数据库实战项目五HBaseAPI开发

任务二HBase过滤器详解回顾知识点1

HBase常用API回顾回顾知识点2HBase编程实例任务引入在上一个任务中,我们学习了HBase的常用API以及HBase的编程方法,本任务将学习HBase中的一个重要API——过滤器。

任务概要任务描述:HBase基础API中的查询操作在面对大量数据的时候是非常苍白的,所以Hbase提供了高级的查询方法:Filter。本任务将讲解常见的过滤器用法。任务教学目标:熟悉HBase过滤器的作用和种类。掌握HBase过滤器的编程方法。一HBase过滤器介绍二HBase过滤器分类教学内容HBase过滤器介绍知识点一(一)HBase过滤器介绍HBase过滤器执行流程HBase过滤器分类知识点二(二)HBase过滤器分类1.比较过滤器要完成一个过滤的操作,至少需要两个参数。一个是抽象的操作符,另外一个就是具体的比较器(Comparator)。过滤器的构成比较过滤器的种类抽象操作符抽象操作符说明LESS小于LESS_OR_EQUAL小于等于EQUAL等于NOT_EQUAL不等于GREATER_OR_EQUAL大于等于GREATER大于等于NO_OP无操作1.比较过滤器(二)HBase过滤器分类(二)HBase过滤器分类HBase常用比较过滤器比较器说明BinaryComparator按字节索引顺序比较指定字节数组,采用BpareTo(byte[])BinaryPrefixComparator和BinaryComparator相同,只是比较左端的数据是否相同NullComparator判断给定的是否为空BitComparator按位比较RegexStringComparator提供一个正则的比较器,仅支持EQUAL和非EQUALSubstringComparator判断提供的子串是否出现在value中1.比较过滤器(二)HBase过滤器分类1.比较过滤器RowFilter:基于行键来过滤数据;FamilyFilter:基于列族来过滤数据;QualifierFilter:基于列限定符(列名)来过滤数据;ValueFilter:基于单元格(cell)的值来过滤数据;DependentColumnFilter:指定一个参考列来过滤其他列的过滤器,过滤的原则是基于参考列的时间戳来进行筛选。(二)HBase过滤器分类1.比较过滤器RowFilter、FamilyFilter、QualifierFilter、ValueFilter的使用方法相同,均只要传递比较运算符和运算器实例即可构建,然后通过setFilter方法传递给scan。Filterfilter=newRowFilter(CompareOperator.LESS_OR_EQUAL,newBinaryComparator(Bytes.toBytes("xxx")));scan.setFilter(filter);(二)HBase过滤器分类1.比较过滤器可以把DependentColumnFilter理解为一个valueFilter和一个时间戳过滤器的组合。DependentColumnFilter有三个带参构造器,这里选择一个参数最全的进行说明:DependentColumnFilter(finalbyte[]family,finalbyte[]qualifier,finalbooleandropDependentColumn,finalCompareOperatorop,finalByteArrayComparablevalueComparator)RowFilter:基于行键来过滤数据;FamilyFilter:基于列族来过滤数据;QualifierFilter:基于列限定符(列名)来过滤数据;ValueFilter:基于单元格(cell)的值来过滤数据;DependentColumnFilter:指定一个参考列来过滤其他列的过滤器,过滤的原则是基于参考列的时间戳来进行筛选。(二)HBase过滤器分类2.专用过滤器——单列列值过滤器基于某列(参考列)的值决定某行数据是否被过滤。其实例有以下方法:setFilterIfMissing(booleanfilterIfMissing):默认值为false,即如果该行数据不包含参考列,其依然被包含在最后的结果中;设置为true时,则不包含;setLatestVersionOnly(booleanlatestVersionOnly):默认为true,即只检索参考列的最新版本数据;设置为false,则检索所有版本数据。单列列值过滤器(二)HBase过滤器分类2.专用过滤器——单列列值过滤器SingleColumnValueFiltersingleColumnValueFilter=newSingleColumnValueFilter("student".getBytes(),"name".getBytes(),CompareOperator.EQUAL,newSubstringComparator("xiaolan"));singleColumnValueFilter.setFilterIfMissing(true);scan.setFilter(singleColumnValueFilter);(二)HBase过滤器分类2.专用过滤器——单列列值排除器单列列值排除器SingleColumnValueExcludeFilter继承自上面的单列列值过滤器SingleColumnValueFilter,过滤行为与其相反。单列列值排除器(二)HBase过滤器分类2.专用过滤器——行键前缀过滤器基于RowKey值决定某行数据是否被过滤。行键前缀过滤器PrefixFilterprefixFilter=newPrefixFilter(Bytes.toBytes("xxx"));scan.setFilter(prefixFilter);(二)HBase过滤器分类2.专用过滤器——列名前缀过滤器基于列限定符(列名)决定某行数据是否被过滤。列名前缀过滤器ColumnPrefixFiltercolumnPrefixFilter=newColumnPrefixFilter(Bytes.toBytes("xxx"));scan.setFilter(columnPrefixFilter);(二)HBase过滤器分类2.专用过滤器——分页过滤器可以使用这个过滤器实现对结果按行进行分页,创建PageFilter实例的时候需要传入每页的行数。分页过滤器publicPageFilter(finallongpageSize){Preconditions.checkArgument(pageSize>=0,"mustbepositive%s",pageSize);this.pageSize=pageSize;}(二)HBase过滤器分类2.专用过滤器——时间戳过滤器List<Long>list=newArrayList<>();list.add(1554975573000L);TimestampsFiltertimestampsFilter=newTimestampsFilter(list);scan.setFilter(timestampsFilter);(二)HBase过滤器分类2.专用过滤器——首次行键过滤器FirstKeyOnlyFilter只扫描每行的第一列,扫描完第一列后就结束对当前行的扫描,并跳转到下一行。相比于全表扫描,其性能更好,通常用于行数统计的场景,因为如果某一行存在,则行中必然至少有一列。首次行键过滤器FirstKeyOnlyFilterfirstKeyOnlyFilter=newFirstKeyOnlyFilter();scan.set(firstKeyOnlyFilter);(二)HBase过滤器分类3.Filterlist当需要多个过滤器共同作用于一次查询的时候,就需要使用FilterList。FilterList支持通过构造器或者addFilter方法传入多个过滤器。Filterlist//构造器传入publicFilterList(finalOperatoroperator,finalList<Filter>filters)publicFilterList(finalList<Filter>filters)publicFilterList(final

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论