HBase Restful接口文档

HBase Restful接口文档

由于毕设使用, 对HBase文档相关章节进行汉化, 用于学习, 有语句不通顺或者使用上的其他问题, 请访问官网原文

使用 REST Endpoints

以下示例以服务器 http://example.com:8000 为例, 示例可以使用curlwget命令在终端中运行.
你可以通过添加不同的请求头来请求不同类型的数据

类型请求头
纯文本(默认)不添加
XML“Accept: text/xml”
JSON“Accept: application/json”
protocol buffers“Accept: application/x-protobuf”

除非特殊情况, GET请求一般用于查询, PUTPOST请求用于创建或修改, DELETE请求用于删除.

  • 集群相关信息
EndpointHTTP请求方法说明示例
/version/clusterGET该集群运行HBase的版本curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/version/cluster"
/status/clusterGET集群状态curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/status/cluster"
/GET列出所有非系统的表curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/"
  • 命名空间
EndpointHTTP请求方法说明示例
/namespacesGET列出所有命名空间curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/namespaces/"
/namespaces/$(namespace)GET获取该命名空间详细信息curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/namespaces/special_ns"
/namespaces/$(namespace)POST创建一个新的命名空间curl -vi -X POST -H "Accept: text/xml" "http://example.com:8000/namespaces/special_ns"
/namespaces/$(namespace)/tablesGET列出该命名空间下的全部表curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/namespaces/special_ns/tables"
/namespaces/$(namespace)PUT更改该已存在的命名空间, 目前无效curl -vi -X PUT -H "Accept: text/xml" "http://example.com:8000/namespaces/special_ns
/namespaces/$(namespace)DELETE删除该命名空间curl -vi -X DELETE -H "Accept: text/xml" "http://example.com:8000/namespaces/special_ns"
EndpointHTTP请求方法说明示例
/$(table)/schemaGET获取该表的schema的详细信息curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/users/schema"
/$(table)/schemaPOST使用提供的schema片段更新该表的schemacurl -vi -X POST -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<?xml version="1.0" encoding="UTF-8"?><TableSchema name="users"><ColumnSchema name="cf" KEEP_DELETED_CELLS="true" /></TableSchema>' "http://example.com:8000/users/schema"
/$(table)/schemaPUT创建一个新表或者使用提供的schema代替已存在的表的schemacurl -vi -X PUT -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<?xml version="1.0" encoding="UTF-8"?><TableSchema name="users"><ColumnSchema name="cf" /></TableSchema>' "http://example.com:8000/users/schema"
/$(table)/schemaDELETE删除该表curl -vi -X DELETE -H "Accept: text/xml" "http://example.com:8000/users/schema"
/$(table)/regionsGET列出该表使用的regions服务器curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/users/regions
  • 提示: 如果表位于命名空间下, 则使用${namespace}:${table}替换上文中的${table}, 下文同
  • Get操作
EndpointHTTP请求方法说明示例
/$(table)/$(row)GET获取该行的所有列信息, 值使用Base64编码, 可以为请求添加Accept头来获取对应格式(比如xml, json, protobuf)curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/users/row1"
/$(table)/$(row)/$(column:qualifier)/$(timestamp)GET获取该行的指定列信息, 值使用Base64编码curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/users/row1/cf:a/1458586888395"
/$(table)/$(row)/$(column:qualifier)GET获取该行的指定列信息, 值使用Base64编码curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/users/row1/cf:a"
/$(table)/$(row)/$(column:qualifier)/?v=$(number_of_versions)GET获取该行的指定列最后n次提交的信息, 值使用Base64编码curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/users/row1/cf:a?v=2"
  • Scan操作
EndpointHTTP请求方法说明示例
/$(table)/scanner/PUT获取一个Scanner对象, 其他所有Scan操作都需要该Scanner对象, batch是在Scan中每批返回的行数.
参看下一个例子以了解如何为Scanner增加过滤器.
Scanner的endpoint会在Http响应中作为Location字段返回.
表格中其他示例都以http://example.com:8000/users/scanner/145869072824375522207作为Scanner的endpoint为例.
curl -vi -X PUT -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<Scanner batch="1"/>' "http://example.com:8000/users/scanner/"
/$(table)/scanner/PUT如果需要让Scanner对象支持过滤器或者想要配置Scanner对象的其他属性, 你可以创建一个文本文件并在其中添加你的过滤器.
举例来说, 如果想返回键以u123开头的行, 并且将batch设为100, 过滤器文件应当设定为如下的样子 <Scanner batch="100"><filter>{ "type": "PrefixFilter", "value": "u123" }</filter></Scanner>
curl -vi -X PUT -H "Accept: text/xml" -H "Content-Type:text/xml" -d @filter.txt "http://example.com:8000/users/scanner/"
/$(table)/scanner/$(scanner-id)GET从Scanner获取下一批数据, 单元格的值是字节编码的, 如果Scanner的已经没有更多数据, 将会返回一个HTTP状态204.curl -vi -X GET -H "Accept: text/xml" "http://example.com:8000/users/scanner/145869072824375522207"
$(table)/scanner/$(scanner-id)DELETE删除对应的Scanner并其所占用的资源curl -vi -X DELETE -H "Accept: text/xml" "http://example.com:8000/users/scanner/145869072824375522207"
  • Put操作
EndpointHTTP请求方法说明示例
/$(table)/$(row_key)PUT向表写一入行. 行, 列, 值必须使用Base64编码.
可以在终端中使用base64命令来对字符串进行编码或者解码.
请求的负载在curl的--data参数, /users/fakerow是示例的表和行键.
<CellSet>中添加更多元素来插入多行数据.
你也可以将要插入的数据保存到文件中, 然后通过-d参数传递他, 比如-d @filename.txt.
curl -vi -X PUT -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="cm93NQo="><Cell column="Y2Y6ZQo=">dmFsdWU1Cg==</Cell></Row></CellSet>' "http://example.com:8000/users/fakerow"

curl -vi -X PUT -H "Accept: application/json" -H "Content-Type: application/json" -d '{"Row":[{"key":"cm93NQo=", "Cell": [{"column":"Y2Y6ZQo=", "$":"dmFsdWU1Cg=="}]}]}'' "example.com:8000/users/fakerow"
  • Check-And-Put操作
EndpointHTTP请求方法说明示例
/$(table)/$(row_key)/?check=putPUT条件插入 - 改变该单元格当前版本的值: 将该单元格当前/最终版本的值(current-version-value)与check-value进行比较, 如果current-version-valuecheck-value相等, 则将新数据(new-value)写入到单元格的当前/最终版本中. 行, 列, 值必须使用Base64编码. 可以在终端中使用base64命令来对字符串进行编码或者解码. 请求的负载在curl的--data参数, 负载中要查询的单元格必须在最末尾, 而且正好在要插入的单元格后面, 查询的单元格和插入的单元格必须在同一行, 你也可以将要插入的数据保存到文件中, 然后通过-d参数传递他, 比如-d @filename.txt.curl -vi -X PUT -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="cm93MQ=="><Cell column="Y2ZhOmFsaWFz">T2xkR3V5</Cell><Cell column="Y2ZhOmFsaWFz">TmV3R3V5</Cell></Row></CellSet>' "http://example.com:8000/users/row1/?check=put"

curl -vi -X PUT -H "Accept: application/json" -H "Content-Type: application/json" -d '{"Row":[{"key":"cm93MQ==","Cell":[{"column":"Y2ZhOmFsaWFz","$":"T2xkR3V5"},{"column":"Y2ZhOmFsaWFz", "$":"TmV3R3V5"}] }]}' "http://example.com:8000/users/row1/?check=put"

备注:

  • 在json示例中:
  1. -d选项末尾的{"column":"Y2ZhOmFsaWFz", "$":"TmV3R3V5"}用Base64编码的查询的单元格名和值, "Y2ZhOmFsaWFz""cfa:alias", "TmV3R3V5""NewGuy"

  2. {"column":"Y2ZhOmFsaWFz","$":"T2xkR3V5"}用Base64编码的插入的单元格名和值, "Y2ZhOmFsaWFz""cfa:alias", "T2xkR3V5""NewGuy"

  3. "cm93MQ=="Base64编码后的"row1", 是查询/插入的行键

  4. endpoint中的"/?check=put"是CheckAndPut请求的标志

  5. URL里的行键应当是URL编码的, 举个例子, "david%20chen""row1""david chen""row1"的URL编码

    提示: "cfa"是列族名, "alias"是列名, 他们都是非Base64编码的单元格名
    
  • xml示例与json示例基本上相同, 此处不在多做解释.
  • Check-And-Delete操作
EndpointHTTP请求方法说明示例
/$(table)/$(row_key)/?check=deleteDELETE条件删除某行数据: 将该单元格全部版本的值(any-version-value)与check-value进行比较, 如果any-version-valuecheck-value相等, URL中行键对应行删除. 查询用的行, 列, 值必须使用Base64编码. 可以在终端中使用base64命令来对字符串进行编码或者解码. 请求的负载在curl的--data参数, 你也可以将查询的数据保存到文件中, 然后通过-d参数传递他, 比如-d @filename.txt.curl -vi -X DELETE -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="cm93MQ=="><Cell column="Y2ZhOmFsaWFz">TmV3R3V5</Cell></Row></CellSet>' "http://example.com:8000/users/row1/?check=delete"

curl -vi -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -d '{"Row":[{"key":"cm93MQ==","Cell":[{"column":"Y2ZhOmFsaWFz","$":"TmV3R3V5"}]}]}' "http://example.com:8000/users/row1/?check=delete"
/$(table)/$(row_key) /$(column_family) /?check=deleteDELETE条件删除指定行的一个列族: 将该单元格全部版本的值(any-version-value)与check-value进行比较, 如果any-version-valuecheck-value相等, URL中行键对应行的对应列族删除. 其他与条件删除某行数据相同curl -vi -X DELETE -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="cm93MQ=="><Cell column="Y2ZhOmFsaWFz">TmV3R3V5</Cell></Row></CellSet>' "http://example.com:8000/users/row1/cfa/?check=delete"

curl -vi -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -d '{"Row":[{"key":"cm93MQ==","Cell":[{"column":"Y2ZhOmFsaWFz","$":"TmV3R3V5"}]}]}' "http://example.com:8000/users/row1/cfa/?check=delete"
/$(table)/$(row_key) /$(column:qualifier) /?check=deleteDELETE条件删除指定行列的全部版本: 将该单元格全部版本的值(any-version-value)与check-value进行比较, 如果any-version-valuecheck-value相等, 将URL中row_key/column:qualifier对应行的对应列删除, 其中column:qualifier的形式是column_family:column_name. 其他与条件删除某行数据相同curl -vi -X DELETE -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="cm93MQ=="><Cell column="Y2ZhOmFsaWFz">TmV3R3V5</Cell></Row></CellSet>' "http://example.com:8000/users/row1/cfa:alias/?check=delete"

curl -vi -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -d '{"Row":[{"key":"cm93MQ==","Cell":[{"column":"Y2ZhOmFsaWFz","$":"TmV3R3V5"}]}]}' "http://example.com:8000/users/row1/cfa:alias/?check=delete"
/$(table)/$(row_key) /$(column:qualifier) /$(version_id)/?check=deleteDELETE条件删除指定行列的单个版本: 将该单元格全部版本的值(any-version-value)与check-value进行比较, 如果any-version-valuecheck-value相等, 将URL中row_key/column:qualifier/version_id对应行列的对应版本删除, 其中column:qualifier的形式是column_family:column_name, version_id是一个数目标版本的时间戳+1, 他的值等于. 其他与条件删除某行数据相同curl -vi -X DELETE -H "Accept: text/xml" -H "Content-Type: text/xml" -d '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="cm93MQ=="><Cell column="Y2ZhOmFsaWFz">TmV3R3V5</Cell></Row></CellSet>' "http://example.com:8000/users/row1/cfa:alias/1519423552160/?check=delete"

curl -vi -X DELETE -H "Accept: application/json" -H "Content-Type: application/json" -d '{"Row":[{"key":"cm93MQ==","Cell":[{"column":"Y2ZhOmFsaWFz","$":"TmV3R3V5"}]}]}' "http://example.com:8000/users/row1/cfa:alias/1519423552160/?check=delete"

备注:

  • 在json示例中:
  1. -d选项末尾的{"column":"Y2ZhOmFsaWFz", "$":"TmV3R3V5"}用Base64编码的查询的单元格名和值, "Y2ZhOmFsaWFz""cfa:alias", "TmV3R3V5""NewGuy"
  2. "cm93MQ=="Base64编码后的"row1", 是查询并删除的行键
  3. endpoint中的"/?check=delete"是CheckAndDelete请求的标志
  4. 最后一个示例中请求URL中的"version_id"应当等于"目标版本的时间戳+1"
  5. URL中的"row key", "column family", "cell name"或"column family:column name", "version_id", 应当采用URL编码.
  • xml示例与json示例基本上相同, 此处不在多做解释.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值