`
085567
  • 浏览: 217374 次
  • 性别: 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的设计也是十分重要的。复合的查询不仅能够缩短时间,也能加快查询的效率和速度。

 

 

转自:http://blog.csdn.net/dajuezhao/archive/2010/07/21/5751914.aspx

 

分享到:
评论

相关推荐

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

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

    hbase用于查询客户端工具

    HBase Shell提供了创建表、删除表、插入数据、查询数据等基本操作,同时也支持复杂的条件查询和扫描。通过Shell,你可以直接执行HBase的API调用,进行调试和测试。 2. **HBase REST Gateway**:REST...

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

    由于HBase不支持复杂的SQL查询,因此,对于多条件查询,合理设计RowKey显得尤为重要。 本文主要讨论的是如何通过位运算的比较器来实现多条件查询,这种设计方法是针对那些需要查询多个列值的场景。首先,我们需要...

    hbase导出csv,文本,html文件

    1. **HBase条件查询**:使用HBase的Shell命令或者Java API,根据特定条件(如行键、列族、时间戳等)查询HBase中的数据。 2. **数据导入Hive**:创建一个Hive外部表,该表与HBase表结构对应,然后使用`LOAD DATA`...

    HbaseTemplate 操作hbase

    2. **查找(find)操作**:HbaseTemplate提供了多种查找数据的方法,例如`find`方法,可以基于特定的行键或者扫描条件查询数据。这些方法允许我们灵活地定位到HBase表中的特定行或范围,返回结果可以是单个RowResult...

    hbase数据可视化系统

    《HBase数据可视化系统构建详解》 在大数据领域,HBase作为一款分布式列式数据库,因其高并发、低...在实际应用中,可以根据需求进一步扩展功能,例如支持更复杂的查询条件、数据导出导入等,以满足不同场景的需求。

    java操作Hbase之Hbase专用过滤器PageFilter的使用源代码

    然后,我们可以将这个过滤器添加到Scan对象中,Scan对象是用于定义HBase查询条件的: ```java Scan scan = new Scan(); scan.setFilter(pageFilter); ``` 接下来,使用HBase的Table对象执行扫描操作: ```java ...

    thrift1 查询hbase

    在本案例中,"thrift1 查询hbase"是指使用Python通过Thrift1接口来与HBase进行交互,实现数据的查询操作。下面将详细讲解这个过程。 1. **Thrift接口**:Thrift提供了一种序列化和RPC(远程过程调用)机制,允许...

    CDH-Hbase的安装1

    首先,安装HBase的前提条件是已经部署了HDFS(Hadoop分布式文件系统)和Zookeeper。Zookeeper是一个分布式协调服务,对于HBase的正常运行至关重要,因为它负责集群中的节点管理和配置同步。在确保这两个服务已经安装...

    hbase-2.4.17-bin 安装包

    3. 查询数据:`get '表名', '行键'`获取整行数据,或`scan '表名'`进行全表扫描,可以指定过滤器等条件。 4. 删除数据:`delete '表名', '行键', '列族:列限定符', [时间戳]`删除特定单元格,可选时间戳指定版本。 ...

    HBase官方文档

    创建HBase的步骤涉及了搭建和部署HBase集群的基本流程,包括了需要的前期条件、配置细节以及如何添加数据。 综上所述,HBase的官方文档涵盖了从基础操作、集群配置到高级主题如性能优化和故障处理的广泛内容,这些...

    hbase和hive常用命令记录总结

    查询`hbase_gpsinfo_view`视图中纬度小于109并且经度大于40的所有`vid`值。 ```sql SELECT DISTINCT v.vid FROM hbase_gpsinfo_view v WHERE v.lon < 109 AND lat > 40; ``` #### 创建视图 创建一个名为`hbase_...

    hbase 2级索引

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

    hbase的hbase-1.2.0-cdh5.14.2.tar.gz资源包

    HBase是大数据处理领域的重要工具,尤其适合实时查询和大规模数据存储。理解并掌握HBase的核心概念、安装配置、数据模型以及性能优化策略,对于开发和运维大数据系统至关重要。通过`hbase-1.2.0-cdh5.14.2.tar.gz`这...

    HBase官方文档中文版-HBase手册中文版

    3. Hive集成:通过Hive的HBase存储过程进行数据查询。 4. Flume、Kafka集成:用于日志收集和实时流处理。 这份“HBase官方文档中文版”详细阐述了HBase的核心概念、架构、操作以及最佳实践,对于HBase的学习者和...

    hbase的shell操作

    可以进一步指定查询条件,如列族、起始行键和结束行键等: ```sh scan 'people', {COLUMNS=>'info', STARTROW=>'rk0001', ENDROW=>'rk0003'} ``` 这里会扫描`people`表中`info`列族且行键范围在`rk0001`到`rk0003`...

    java-hbase开发包

    5. **过滤器和比较器**:通过使用`Filter`接口,开发者可以实现复杂的数据筛选逻辑,如基于特定条件的查询。同时,`Comparator`接口允许自定义列值的比较规则。 6. **安全性与权限**:Java-HBase开发包也支持HBase...

Global site tag (gtag.js) - Google Analytics