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 ...
随机推荐
- 【前端知识体系-NodeJS相关】对于EventLoop(事件轮询)机制你到底了解多少?
EventLoop 1. EventLoop的执行流程图 ┌───────────────────────┐ ┌─>│ timers │<----- 执行 setTimeout().set ...
- 浏览器记住密码的自动填充Input问题完美解决方案
1.input 前from和input占位隐藏 <form style="width:0;height:0;display:none;"> <input type ...
- eclipse强行停止buliding workspace
使用Eclipse的过程中可能会遇到buliding workspace卡在一半走不动的情况. 出现这个情况往往是因为Eclipse太调皮了,需要拉出去打屁股,打一顿就好了. 开玩笑的,事实上出现这个 ...
- C# 修改配置文件
/// <summary> /// 保存配置文件的设定 /// </summary> /// <param name="Key"></pa ...
- Docker开启Remote API 访问 2375端口
Docker常见端口 我看到的常见docker端口包括: 2375:未加密的docker socket,远程root无密码访问主机2376:tls加密套接字,很可能这是您的CI服务器4243端口作为h ...
- PDF怎么转换为CAD文件?这两种方法你的会
在日常的办公中,我们最常见的文件格式就是PDF格式的,因为PDF文件的安全性是比较高的,可以防止不小心触碰到键盘修改文件内容,而且PDF文件便于进行文件的传输.但是有时候也需要将PDF转换成CAD,那 ...
- Vue响应式原理及总结
Vue 的响应式原理是核心是通过 ES5 的保护对象的 Object.defindeProperty 中的访问器属性中的 get 和 set 方法,data 中声明的属性都被添加了访问器属性,当读取 ...
- msf中的情报搜集
msf中的情报搜集 被动的信息搜集 使用被动的.间接的信息搜索技巧,可以在目标不察觉的情况下挖掘目标的相关信息. 公开渠道情报搜集 对公开的和已知的信息进行检索筛选,获取到目标的情报集合,一系列的 ...
- Android开发:getSupportFragmentManager()不可用
getSupportFragmentManager()这个函数不可用显然是因为activity继承错误了,因此我们需要将整个类的所继承的类改变即可 public class MainActivity ...
- Python使用APScheduler实现定时任务
APScheduler是基于Quartz的一个Python定时任务框架.提供了基于日期.固定时间间隔以及crontab类型的任务,并且可以持久化任务.在线文档:https://apscheduler. ...