热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hbaseFilter

官网68.ClientRequestFilters介绍Filter本文基于版本hbase-1.1.2一、首先介绍几个知识点1.1、过滤器是作用于ScanorGet,通过设置Fi

官网68. Client Request Filters介绍Filter

本文基于版本hbase-1.1.2

在这里插入图片描述

一、首先介绍几个知识点


1.1、 过滤器是作用于Scan or Get, 通过设置Filter,对查询进行优化

Get and Scan instances can be optionally configured with filters which are applied on the RegionServer.
Filters can be confusing because there are many different types,
and it is best to approach them by understanding the groups of Filter functionality.

1.2、FilterList 过滤器集合, 可以设置多个Filter, 通过FilterList

下面参数设置Filter生效策略

  • FilterList.Operator.MUST_PASS_ONE 表示or的关系, 有一个Filter符合就可以
  • FilterList.Operator.MUST_PASS_ALL 便是and关系, 都匹配上。

1.3、org.apache.hadoop.hbase.filter.CompareFilter, Filter的高层抽闲类, 提供两点


  • operator (equal, greater, not equal, etc) , 定义在 enum CompareOp

/** Comparison operators. */@InterfaceAudience.Public@InterfaceStability.Stablepublic enum CompareOp {/** less than */LESS,/** less than or equal to */LESS_OR_EQUAL,/** equals */EQUAL,/** not equal */NOT_EQUAL,/** greater than or equal to */GREATER_OR_EQUAL,/** greater than */GREATER,/** no operation */NO_OP,}

  • comparator , 它的类型是ByteArrayComparable一个抽象类, 通过ctrl+t可以看到它的子类。

这里写图片描述

##上面连个参数是所有Filter都需要的。
##二、过滤器可以根据过滤类型进行分组
###2.1、过滤Column Value
###2.1.1、SingleColumnValueFilter

SingleColumnValueFilter singleColumnValueFilter= new SingleColumnValueFilter("cf1".getBytes(), //column family"data".getBytes(), //columnCompareOp.EQUAL, new SubstringComparator("223.73.39.213"));/comparator: 匹配子串

###2.1.2、ColumnValueFilter(这个是2.0.0才引入的, 作为SingeColumnValueFilter的补充)


###2.2、 KeyValue Metadata

由于HBASE内部存储数据是按照键值对的,KeyValue Metadata Filters 评估行的keys(i.e., ColumnFamily:Column qualifiers)的存在性,而不是前一节的值。
###2.2.1、FamilyFilter
###2.2.2、QualifierFilter
###2.2.3、ColumnPrefixFilter
###2.2.4、MultipleColumnPrefixFilter
###2.2.5、ColumnRangeFilter

###2.3、根据rowkey过滤
通常使用StROTW/STOPROW方法来扫描行选择是更好的想法,但是也可以使用RowFilter。
###2.3.1、RowFilter

RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator(reg));//两个基本参数

####RowKey的后缀匹配实现: 例如ROWKEY是yyyyMMDD-UserID形式,如果要以UserID为条件查询数据,怎样实现?

  • 筛选出某一userId在一个时间段[time1,time2)的值
    ####解决: 结合startrow, endrow, rowfilter

scan 'tablename' {STARTROW=>'time1+uid', ENDROW=>'time2+uid', FILTER=>"RowFilter(=,'regexstring:.*uid')"}

####代码中实现

Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes(time1+uid));
scan.setStopRow(Bytes.toBytes(time2+uid));
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new RegexStringComparator(".*"+uid));
scan.setFilter(filter);ResultScanner rs = null;
HTable table = new HTable(hbaseConfig, Bytes.toBytes(tableName));
String rowkey = null;
rs = table.getScanner(scan);
for (Result r : rs) {for (KeyValue kv : r.list()) {rowkey = Bytes.toString(kv.getRow());System.out.println(rowkey);}
}

###2.4、Utility
###2.4.1、FirstKeyOnlyFilter
This is primarily used for rowcount jobs.


推荐阅读
  • express工程中的json调用方法
    本文介绍了在express工程中如何调用json数据,包括建立app.js文件、创建数据接口以及获取全部数据和typeid为1的数据的方法。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
author-avatar
优优绿园之时尚饰品_834
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有