hbase(hadoop)是用java编写的,有些语言(例如python)能够对它提供良好的支持,但也有很多语言使用起来并不是那么方便,比如c#只能通过thrift访问。Rest就能很好的解决这个问题。Hbase的org.apache.hadoop.hbase.rest包提供了rest接口,它内嵌了jetty作为servlet容器。
启动命令:./bin/hbase rest start -p <port>
默认端口8080.
以下介绍如何使用rest api查询hbase数据。
- rowkey查询
1. 单值查询。只查询单个column family或column。
语法:GET /<table>/<row>/<column> ( : <qualifier> )?( / <timestamp> )?
范例:curl -H "Accept: application/json" http://localhost:8000/table/key/cf:raw
在测试中我发现加入<timestamp>参数之后就找不到数据了,不知道是不是bug
2. 多值查询。查询多个column family或column。
语法:GET /<table>/<row> ( / ( <column> ( : <qualifier> )? ( , <column> ( : <qualifier> )? )+ )?( / ( <start-timestamp> ',' )? <end-timestamp> )? )?( ?v= <num-versions> )?
范例:curl -H "Accept: application/json" http://localhost:8000/table1/key1/cf1:q1,cf2/1436350580000,1436350590000/3
可以通过timestamp过滤查询结果,也可以通过<num-versions>设定返回的最大版本数
- 通配符查询
在rowkey后添加*号,可以返回以该rowkey为前缀的所有记录,如果以*号为rowkey来查询,则返回该table中所有的记录。
范例:curl -H "Accept: application/json" http://localhost:8000/table/keyprefix*/cf
- key list查询
据我所知,暂不支持该功能,只能对循环key list对每个key做查询。
- key范围查询
1. 有状态scanner
首先在server端创建scanner:PUT /<table>/scanner
范例:curl -H "Content-Type: text/xml" -d '<Scanner batch="1"/>' http://localhost:8000/table/scanner
在response中获得scanner id,然后可以使用这个id拿到这个scanner查询到的所有cell的值,
语法:GET /<table>/scanner/<scanner-id>
范例:curl -H "Content-Type: application/json" http://localhost:8000/table/scanner/12447063229213b1937
注意每次调用只能返回一个cell的值,而且比较奇怪的是只返回值而没有cf和qualifier,所以使用起来很不方便。
使用完之后删除scanner:DELETE /<table>/scanner/<scanner-id>
2. 无状态scanner
无状态的scanner不保存任何关于查询的状态,它把所有的查询条件作为参数进行一次性的查询。
查询参数包括:
startrow - 查询起始key。
endrow - 查询终止key。
columns - 查询的column。
starttime, endtime - 通过指定起始时间选择特定的数据版本,starttime和endtime必须同时设置。
maxversions - 每个返回的cell的版本数。
limit - 返回数据条数.
范例:
查询单个column cf:q:
curl -H "Content-Type: text/xml" https://localhost:8080/table/*?columns=cf:q
查询多个column cf1:q1和cf2:q2:
curl -H "Content-Type: text/xml" https://localhost:8080/table/*?columns=cf1:q1,cf2:q2
从key1开始查询两条记录:
curl -H "Content-Type: text/xml" https://localhost:8080/table/*?startrow=key1&limit=2
查询1389900769772和1389900800000之间的版本:
curl -H "Content-Type: text/xml" https://localhost:8080/table/*?starttime=1389900769772&endtime=1389900800000
相关推荐
HBase是一种分布式、基于列族的NoSQL数据库,它在大数据领域中扮演着重要的角色,尤其是在需要实时查询大规模数据集时。HBase以其高吞吐量、低延迟和水平扩展能力而闻名,常用于存储非结构化和半结构化数据。在HBase...
Apache HBase是一个分布式的、版本化的、基于列的NoSQL数据库,它构建在Hadoop文件系统(HDFS)之上,提供了高吞吐量的数据访问。HBase中文API为开发者提供了在中文环境中操作HBase的便利。 1. **入门** - **介绍*...
Hwrapper 是用于 hbase rest 的 python 3+ 包装器。 (从 pypi http://pypi.python.org/pypi/Hwrapper/0.1 替代下载)常见用法:启动你的 hbase rest $bin/hbase rest start -p 9300(默认端口是 8080)查看 wiki 以...
- Hive允许使用类似于SQL的语言查询HBase数据,便于数据分析。 #### HBase与BigTable的技术对应关系 HBase的设计灵感来源于Google的BigTable,两者在技术层面有许多相似之处: 1. **数据模型**:均采用列族存储...
本人原创, 1.Hbase连接需要改Hbase包中的两个配置文件,加上Hbase所在机器ip及端口 2.HBaseDMLT初始化环境 3.MapDataIni为建表 4.MapDataInsert为写数据 5.MapDataDelete为删除数据 6.MapDataRead为读数据
通过高效的数据存储和访问机制,HBase能够在海量数据中快速检索特定的信息,满足实时查询需求。此外,HBase还提供了丰富的接口支持和高度灵活的数据模型,使得开发者能够轻松地构建复杂的应用程序。
"HBase-JSONRest"的核心功能是创建了一个只读的发布历史,这意味着用户可以利用JSONREST来查询HBase中的数据,但无法进行写操作。这样的设计有利于保护数据的完整性,同时也降低了因为误操作导致的数据破坏风险。 ...
标签"C# HBase 示例代码"明确了主题,意味着我们将讨论如何用C#语言来操作HBase数据库,这通常涉及到连接HBase,创建表,插入数据,查询数据,更新数据以及删除数据等操作。 根据提供的压缩包子文件"**HBaseRestAPI...
- **Java API**: HBase提供了丰富的Java API,支持客户端进行数据的增删改查操作。 - **Eclipse集成**: 开发者可以通过Eclipse集成环境进行HBase应用程序的开发和调试。 - **常用工具**: 如HBase Shell、HBase REST ...
4. 使用HBase API:展示如何编写Java代码进行HBase的数据插入、查询、更新和删除操作。 5. HBase与Hadoop的整合:讲解如何将HBase与Hadoop MapReduce配合使用进行大数据处理。 6. 实用工具:介绍HBase Shell、HBase ...
- 使用HBase Shell进行基本操作,如创建表、插入数据、查询数据等。 - **Basic Prerequisites**(基本前提条件): - Java Development Kit (JDK):HBase依赖于JDK运行,推荐使用最新稳定版本。 - ZooKeeper:...
《HBase 0.98.1-hadoop2 API》是关于HBase数据库的一个特定版本的API参考文档,主要用于帮助开发者理解和使用这个基于Hadoop的数据存储系统。HBase是Apache软件基金会开发的一个开源NoSQL数据库,它构建在Hadoop...
4. REST Gateway:支持REST风格的Http API访问HBase,解除了语言限制 5. Pig:可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计 ...
3. **HBase REST Gateway**:提供RESTful API,使HBase可以被HTTP客户端访问,如Web应用。 4. **Phoenix**:基于HBase的SQL查询引擎,提供SQL接口,简化开发工作。 5. ** hbck (HBase Checkpointer)**:用于检查和...
HBase官方中文文档概述了Apache HBase TM的基本概念、配置方法、升级策略、shell使用、数据模型、架构设计、安全机制、API接口、性能调优以及故障排除等多方面的知识。HBase是一个开源的非关系型分布式数据库(NoSQL...
- 在实时分析、日志分析、监控系统等场景中,从HBase实时或定时同步数据到Elasticsearch,可以充分利用Elasticsearch的搜索和分析能力,提供高效的查询性能和丰富的聚合分析功能。 - 同步过程中,可以采用增量同步...
HBase,作为大数据领域中一款重要的分布式数据库系统,基于Hadoop生态系统构建,旨在提供高可靠、高性能的数据存储与查询服务。本文将全面解析HBase的核心概念、技术架构及应用场景,帮助读者深入理解这一关键技术。...
- **REST**:说明 HBase 的 REST API 接口及其使用方法。 - **Thrift**:解释 HBase 的 Thrift 接口,并给出示例。 - **C/C++ Apache HBase Client**:提供 C/C++ 开发者使用的 HBase 客户端接口。 #### 十二、...