`
dajuezhao
  • 浏览: 59556 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HBase的条件查询

阅读更多

一、环境

HBase版本hbase-0.20.5,Hadoop的版本hadoop-0.20.2,JDK1.6

二、需求背景

在HBase中,进行条件查询,很多的文件都说过,但是大多数都是在说明如何设置合理的表结构以及如何设置rowkey进行查询检索,这样的结构设计可以在一定层度上通过rowkey来定位查询(速度很快),但是,如果我是已知某个列的值,需要看有多少行的列包含这个值,那么这样的需求通过rowkey来查询就显得不合适。最早我的想法是查询内容,然后遍历,但是这样的效率明显是很低下的,所以,我寻求了其他的解决办法。

三、操作过程

1、一些已知rowkey这样的查询内容我就不在这里描述,网络上有很多这样的内容,我在下面只是说在已知列值的情况下进行的一些查询工作。

2、阅读API,发现了一个SingleColumnValueFilter类,就看名字大概知道作用,细看,然后查了些资料,编写了代码如下,先看代码:
public class HBaseFilterTest {

public static void main(String[] args) {
try {
HBaseConfiguration conf = new HBaseConfiguration();
conf.set("hbase.master.port", "IP:PORT");
conf.set("hbase.zookeeper.quorum", "IP");
HTable table = new HTable(conf, "scores");
Filter course_art_filter = new SingleColumnValueFilter(Bytes.toBytes("course"), Bytes.toBytes("art"),
CompareOp.EQUAL, Bytes.toBytes("art"));
Scan s = new Scan();
s.setFilter(course_art_filter);
// 指定之后,将只返回一个cell,也就是指定的那一个
// s.addColumn(Bytes.toBytes("course"), Bytes.toBytes("art"));
ResultScanner scanner = table.getScanner(s);
scanner = table.getScanner(s);
for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
System.out.println("rowkey = " + new String(rr.getRow()));
System.out.println("first cell value = " + rr.getCellValue());
System.out.println("cell[] length = " + rr.getCellValues().length);
System.out.println("getCellValues()[2] = " + rr.getCellValues()[2]);
System.out.println("get local cell value = "
+ rr.getCellValue(Bytes.toBytes("course"), Bytes.toBytes("art")));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3、代码写的比较粗糙,但是一些具体的内容反映出来了.

四、总结
抛砖引玉了,filte还有很多,如果细致,可以看看其他的filter类,这样是可以辅助我们在使用hbase进行查询的效率和功能的。
当然,对于前面说到的rowkey的设计也是十分重要的。复合的查询不仅能够缩短时间,也能加快查询的效率和速度。

分享到:
评论

相关推荐

    java通过phoenix进行简单的hbase条件查询的工具类

    可以进行简单的查询出hbase中单个字段的数据,来建立新表

    Hbase行键设计(rowkey)实现多条件查询

    HBASE的使用跟业务逻辑有很强的关联性,就像本文里提到的例子使用ElasticSearch更合适。...本文主要内容是通过合理hbase行键(rowkey)设计实现快速的多条件查询,所采用的方法将所有要用于查询中的列经过一些处理后

    hbase 2级索引

    基于Solr的HBase多条件查询原理很简单,将HBase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey之后在HBASE中通过指定rowkey进行查询。

    hbase导出csv,文本,html文件

    通过条件查询hbase数据导出csv,文本,html等文件,实现方式:将hbase关联hive,然后将hive数据导入真实表,在将真实表数据导入sql数据库

    HBase高性能复杂条件查询引擎

    该方案由一个智能交通解决方案演变而来,设计之初仅寄希望于通过二级索引提升查询性能,由于在前期架构时充分考虑了通用性以及对复杂条件的支持,在后来的演变中逐渐被剥离出来形成了一个通用的查询引擎。...

    Java操作Hbase进行建表、删表以及对数据进行增删改查

    Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    HBase不睡觉

    为什么要叫不睡觉书呢?因为我们发现阻碍人们学习新技术最大的 ...的书籍和网上的资料都还在介绍三层查询架构,可是HBase早已 经改成二层查询架构了。实际操作到的跟书上的操作不一样,这 很让人沮丧。

    10_Hbase.docx

    HBase 的优点:  列可以动态增加,并且列为空就不存储数据,节省存储... 不能支持条件查询,只支持按照 RowKey 来查询。  暂时不能支持Master Server 的故障切换,当Master宕机后,整个存储系统就会挂掉。

    hbase过滤器简单教程

    过滤器可以根据列族、列、版本等更多的条件来对数据进行过滤,基于 HBase 本身提供的三维有序(行键,列,版本有序),这些过滤器可以高效地完成查询过滤的任务,带有过滤器条件的 RPC 查询请求会把过滤器分发到各个...

    apache-phoenix.zip

    实现sql查询Hbase,Phoenix 基于Hbase给面向业务的开发人员提供了以标准SQL的方式对Hbase进行查询操作,并支持标准SQL中大部分特性:条件运算,分组,分页,等高级查询语法。 这里提供两个版本: apache-phoenix-4.8.1...

    Elasticsearch结合hbase的应用

    Elasticsearch结合hbase的应用 是一个分布式nosql的非关系数据库. 基于HDFS适合海量数据存储 根据RowKey查询数据,效率高 模糊查询效率非常差 随意组合的多条件查询非常差

    Hbase 使用场景及案例

    4. 查询简单:不需要复杂查询条件来查询数据的应用,HBase只支持基于rowkey的查询,对于HBase来说,单条记录或者小范围的查询是可以接受的。 Hbase使用场景1:对象存储 我们知道不少的头条类、新闻类的的新闻、网页...

    hbase-solr-coprocessor:通过solr实现hbase二级索引,主要通过hbase的coprocessor的Observer实现

    测试代码,目的是借助solr实现hbase二级索引,以使hbase支持高效的多条件查询。主要通过hbase的coprocessor的Observer实现,通过coprocessor在记录插入hbase时向solr中创建索引。 项目核心为...

    基于HBase的大数据存储的应用场景分析

    HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,适用于结构化的存储,底层依赖于Hadoop的HDFS,利用HBase技术可...不能支持条件查询,只支持按照Rowkey来查询。2.HBase并不适合传统的事物处理程序或关

    HBase数据库检索性能优化策略

    HBase数据库是一个基于分布式的、面向列的、主要用于非结构化数据存储用途的开源数据库...HBase不能支持where条件、Orderby查询,只支持按照主键Rowkey和主键的range来查询,但是可以通过HBase提供的API进行条件过滤。H

    HBaseHelper Hbase增删改查帮助类

    个人封装的一个Hbase操作帮助类,主要有表的创建、删除、插入、删除、查询(单条件、组合条件查询)等等。写的一般有什么需要改正的地方可留言共同参考

    hbase-dao-test:一个Spring Boot应用程序,用于演示HBase中DAO的用法

    该项目包括一个简单的Web界面,以驱动诸如插入和查询之类的基本任务。 先决条件 玛文 该项目需要最新版本的Maven。 HBase的 您应该有一个可用的HBase实例并且正在运行。 您可以在本地安装独立实例,可以使用CDH之类...

    hbase api demo

    hbase的api操作数据库demo,建表、插入数据、根据关键字检索,根据查询条件获取数据集合

Global site tag (gtag.js) - Google Analytics