Hbase 多条件查询
/**
* 获得相等过滤器。相当于SQL的 [字段] = [值]
* @param cf 列族名
* @param col 列名
* @param val 值
* @return 过滤器
*/
public static Filter eqFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareFilter.CompareOp.EQUAL, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
} /**
* 获得大于过滤器。相当于SQL的 [字段] > [值]
* @param cf 列族名
* @param col 列名
* @param val 值
* @return 过滤器
*/
public static Filter gtFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareFilter.CompareOp.GREATER, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
} /**
* 获得大于等于过滤器。相当于SQL的 [字段] >= [值]
* @param cf 列族名
* @param col 列名
* @param val 值
* @return 过滤器
*/
public static Filter gteqFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareFilter.CompareOp.GREATER_OR_EQUAL, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
} /**
* 获得小于过滤器。相当于SQL的 [字段] < [值]
* @param cf 列族名
* @param col 列名
* @param val 值
* @return 过滤器
*/
public static Filter ltFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareFilter.CompareOp.LESS, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
} /**
* 获得小于等于过滤器。相当于SQL的 [字段] <= [值]
* @param cf 列族名
* @param col 列名
* @param val 值
* @return 过滤器
*/
public static Filter lteqFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareFilter.CompareOp.LESS_OR_EQUAL, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
} /**
* 获得不等于过滤器。相当于SQL的 [字段] != [值]
* @param cf 列族名
* @param col 列名
* @param val 值
* @return 过滤器
*/
public static Filter neqFilter(String cf, String col, byte[] val) {
SingleColumnValueFilter f = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareFilter.CompareOp.NOT_EQUAL, val);
f.setLatestVersionOnly(true);
f.setFilterIfMissing(true);
return f;
} /**
* 和过滤器 相当于SQL的 的 and
* @param filters 多个过滤器
* @return 过滤器
*/
public static Filter andFilter(Filter... filters) {
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
if(filters!=null && filters.length > 0) {
if(filters.length > 1) {
for (Filter f : filters) {
filterList.addFilter(f);
}
}
if(filters.length == 1) {
return filters[0];
}
}
return filterList;
} /**
* 和过滤器 相当于SQL的 的 and
* @param filters 多个过滤器
* @return 过滤器
*/
public static Filter andFilter(Collection<Filter> filters) {
return andFilter(filters.toArray(new Filter[0]));
} /**
* 或过滤器 相当于SQL的 or
* @param filters 多个过滤器
* @return 过滤器
*/
public static Filter orFilter(Filter... filters) {
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);
if(filters!=null && filters.length > 0) {
for(Filter f : filters) {
filterList.addFilter(f);
}
}
return filterList;
} /**
* 或过滤器 相当于SQL的 or
* @param filters 多个过滤器
* @return 过滤器
*/
public static Filter orFilter(Collection<Filter> filters) {
return orFilter(filters.toArray(new Filter[0]));
} /**
* 非空过滤器 相当于SQL的 is not null
* @param cf 列族
* @param col 列
* @return 过滤器
*/
public static Filter notNullFilter(String cf,String col) {
SingleColumnValueFilter filter = new SingleColumnValueFilter(cf.getBytes(),col.getBytes(), CompareFilter.CompareOp.NOT_EQUAL,new NullComparator());
filter.setFilterIfMissing(true);
filter.setLatestVersionOnly(true);
return filter;
} /**
* 空过滤器 相当于SQL的 is null
* @param cf 列族
* @param col 列
* @return 过滤器
*/
public static Filter nullFilter(String cf,String col) {
SingleColumnValueFilter filter = new SingleColumnValueFilter(cf.getBytes(),col.getBytes(), CompareFilter.CompareOp.EQUAL,new NullComparator());
filter.setFilterIfMissing(false);
filter.setLatestVersionOnly(true);
return filter;
} /**
* 子字符串过滤器 相当于SQL的 like '%[val]%'
* @param cf 列族
* @param col 列
* @param sub 子字符串
* @return 过滤器
*/
public static Filter subStringFilter(String cf, String col, String sub) {
SingleColumnValueFilter filter = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareFilter.CompareOp.EQUAL, new SubstringComparator(sub));
filter.setFilterIfMissing(true);
filter.setLatestVersionOnly(true);
return filter;
} /**
* 正则过滤器 相当于SQL的 rlike '[regex]'
* @param cf 列族
* @param col 列
* @param regex 正则表达式
* @return 过滤器
*/
public static Filter regexFilter(String cf, String col , String regex) {
SingleColumnValueFilter filter = new SingleColumnValueFilter(cf.getBytes(), col.getBytes(), CompareFilter.CompareOp.EQUAL, new RegexStringComparator(regex));
filter.setFilterIfMissing(true);
filter.setLatestVersionOnly(true);
return filter;
}
Hbase 多条件查询的更多相关文章
- 基于Solr的HBase多条件查询测试
背景: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级 的快 速检索,对于多字段的组合查询却无能为力.针对HBa ...
- Hbase多条件查询数据(FilterList)
利用Filter进行筛选:HBase的Scan可以通过setFilter方法添加过滤器(Filter),这也是分页.多条件查询的基础.HBase为筛选数据提供了一组过滤器,通过这个过滤器可以在HBas ...
- 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- (转)Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- HBase多条件筛选查询方案
最近的项目需要使用Hbase做实时查询,由于Hbase只支持一级索引,也就是使用rowkey作为索引查询,所以对于多条件筛选查询的支持不够,在不建立二级索引的情况下,只能使用Hbase API中提供的 ...
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- HBase多条件及分页查询的一些方法
HBase是Apache Hadoop生态系统中的重要一员,它的海量数据存储能力,超高的数据读写性能,以及优秀的可扩展性使之成为最受欢迎的NoSQL数据库之一.它超强的插入和读取性能与它的数据组织方式 ...
- HBase高性能复杂条件查询引擎
转自:http://blog.csdn.net/bluishglc/article/details/31799255 mark 写在前面 本文2014年7月份发表于InfoQ,HBase的PMC成员T ...
- HBase之四--(1):Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
随机推荐
- app——升级测试点
APP版本升级的测试点 该文章转载于:https://www.cnblogs.com/changpuyi/p/8618755.html 移动端版本更新升级是一个比较重要的功能点,主要分为强制更新和 ...
- Elasticsearch 6.x版本全文检索学习之倒排索引与分词、Mapping 设置
Beats,Logstash负责数据收集与处理.相当于ETL(Extract Transform Load).Elasticsearch负责数据存储.查询.分析.Kibana负责数据探索与可视化分析. ...
- TCP三次握手四次分手—简单详解
关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 疑问一,上图传递过程中出 ...
- Javase之多线程(1)
多线程(1) 多线程的概述 了解多线程之前需要先了解线程,而线程依赖于进程而存在,所以先了解进程. 什么是进程 进程就是正在运行的程序.是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空 ...
- gradle 参数配置监听
说明 gradle提供了对project状态配置监听的接口回调,以方便我们来配置一些Project的配置属性,监听主要分为两大类,一种是通过project进行 回调,一种是通过gradle进行回调,作 ...
- Gradle task简单使用
还望支持个人博客站:http://www.enjoytoday.cn task是什么 task是gradle构建脚本的最小运行单元,我们通过在gradle脚本中创建task任务,以期完成某个特定的功能 ...
- 【团队项目3】需求改进&系统设计
一.需求 & 原型改进 1.针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改 根据用户反馈,我们针对如下问题做了修改: 问题1:如何保证机构是否是官方的?平台是否有监管? 修 ...
- [转]Eclipse插件开发之基础篇(2) 第一个Eclipse插件
原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/15/eclipse_plugin_1_1_1.html 在Eclipse中使用PDE(Plug ...
- mac odoo 12 虚拟环境搭建及 依赖安装
经过这几天的折腾,odoo 12 的虚拟环境总算搭建成了.网站有很多虚拟环境相关的搭建,但是都是写文章的自己清楚,但是文章里却描述不清楚. odoo 虚拟环境 这次搭建环境使用 odoo 12.0. ...
- redis和memcached的对比
redis:① 支持的数据结构比较多 ② 支持集群 ③ 支持数据持久化,RDB.AOF ④ 单个value最大值512MB ⑤ 单核 memcached: ① 支持K/V结构的数据 ② 不支 ...