`
kane_xie
  • 浏览: 145269 次
社区版块
存档分类
最新评论

Hbase Rest API : 数据查询

阅读更多

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

 

1
3
分享到:
评论

相关推荐

    hbase用于查询客户端工具

    HBase是一种分布式、基于列族的NoSQL数据库,它在大数据领域中扮演着重要的角色,尤其是在需要实时查询大规模数据集时。HBase以其高吞吐量、低延迟和水平扩展能力而闻名,常用于存储非结构化和半结构化数据。在HBase...

    HBase中文API

    Apache HBase是一个分布式的、版本化的、基于列的NoSQL数据库,它构建在Hadoop文件系统(HDFS)之上,提供了高吞吐量的数据访问。HBase中文API为开发者提供了在中文环境中操作HBase的便利。 1. **入门** - **介绍*...

    Hwrapper:Hwrapper 是一个用于 hbase rest api 的 python 框架-开源

    Hwrapper 是用于 hbase rest 的 python 3+ 包装器。 (从 pypi http://pypi.python.org/pypi/Hwrapper/0.1 替代下载)常见用法:启动你的 hbase rest $bin/hbase rest start -p 9300(默认端口是 8080)查看 wiki 以...

    大数据技术原理与应用-实验3熟悉常用的HBase操作(林子雨)

    - Hive允许使用类似于SQL的语言查询HBase数据,便于数据分析。 #### HBase与BigTable的技术对应关系 HBase的设计灵感来源于Google的BigTable,两者在技术层面有许多相似之处: 1. **数据模型**:均采用列族存储...

    Hbase操作示例 Hbase的读写例子

    本人原创, 1.Hbase连接需要改Hbase包中的两个配置文件,加上Hbase所在机器ip及端口 2.HBaseDMLT初始化环境 3.MapDataIni为建表 4.MapDataInsert为写数据 5.MapDataDelete为删除数据 6.MapDataRead为读数据

    HBase技术介绍.docx

    通过高效的数据存储和访问机制,HBase能够在海量数据中快速检索特定的信息,满足实时查询需求。此外,HBase还提供了丰富的接口支持和高度灵活的数据模型,使得开发者能够轻松地构建复杂的应用程序。

    HBase-JSONRest:HBase-JSONRest 的只读发布历史

    "HBase-JSONRest"的核心功能是创建了一个只读的发布历史,这意味着用户可以利用JSONREST来查询HBase中的数据,但无法进行写操作。这样的设计有利于保护数据的完整性,同时也降低了因为误操作导致的数据破坏风险。 ...

    经过测试,总结出可运行成功的C#For HBase示例代码

    标签"C# HBase 示例代码"明确了主题,意味着我们将讨论如何用C#语言来操作HBase数据库,这通常涉及到连接HBase,创建表,插入数据,查询数据,更新数据以及删除数据等操作。 根据提供的压缩包子文件"**HBaseRestAPI...

    hbase从入门到编程 - 文档.pdf

    - **Java API**: HBase提供了丰富的Java API,支持客户端进行数据的增删改查操作。 - **Eclipse集成**: 开发者可以通过Eclipse集成环境进行HBase应用程序的开发和调试。 - **常用工具**: 如HBase Shell、HBase REST ...

    Hadoop之HBase学习笔记

    4. 使用HBase API:展示如何编写Java代码进行HBase的数据插入、查询、更新和删除操作。 5. HBase与Hadoop的整合:讲解如何将HBase与Hadoop MapReduce配合使用进行大数据处理。 6. 实用工具:介绍HBase Shell、HBase ...

    apache hbase reference guide

    - 使用HBase Shell进行基本操作,如创建表、插入数据、查询数据等。 - **Basic Prerequisites**(基本前提条件): - Java Development Kit (JDK):HBase依赖于JDK运行,推荐使用最新稳定版本。 - ZooKeeper:...

    HBase 0.98.1-hadoop2 API

    《HBase 0.98.1-hadoop2 API》是关于HBase数据库的一个特定版本的API参考文档,主要用于帮助开发者理解和使用这个基于Hadoop的数据存储系统。HBase是Apache软件基金会开发的一个开源NoSQL数据库,它构建在Hadoop...

    Hadoop之Hbase从入门到精通.doc

    4. REST Gateway:支持REST风格的Http API访问HBase,解除了语言限制 5. Pig:可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计 ...

    Introduction of HBase

    3. **HBase REST Gateway**:提供RESTful API,使HBase可以被HTTP客户端访问,如Web应用。 4. **Phoenix**:基于HBase的SQL查询引擎,提供SQL接口,简化开发工作。 5. ** hbck (HBase Checkpointer)**:用于检查和...

    Hbase 官方中文文档

    HBase官方中文文档概述了Apache HBase TM的基本概念、配置方法、升级策略、shell使用、数据模型、架构设计、安全机制、API接口、性能调优以及故障排除等多方面的知识。HBase是一个开源的非关系型分布式数据库(NoSQL...

    HBase-Elasticsearch数据同步1

    - 在实时分析、日志分析、监控系统等场景中,从HBase实时或定时同步数据到Elasticsearch,可以充分利用Elasticsearch的搜索和分析能力,提供高效的查询性能和丰富的聚合分析功能。 - 同步过程中,可以采用增量同步...

    Hbase技术介绍

    HBase,作为大数据领域中一款重要的分布式数据库系统,基于Hadoop生态系统构建,旨在提供高可靠、高性能的数据存储与查询服务。本文将全面解析HBase的核心概念、技术架构及应用场景,帮助读者深入理解这一关键技术。...

    HBase 官方文档

    - **REST**:说明 HBase 的 REST API 接口及其使用方法。 - **Thrift**:解释 HBase 的 Thrift 接口,并给出示例。 - **C/C++ Apache HBase Client**:提供 C/C++ 开发者使用的 HBase 客户端接口。 #### 十二、...

Global site tag (gtag.js) - Google Analytics