热门标签 | 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.


推荐阅读
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
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社区 版权所有