The examples below illustrate the set of basic operations with HBase instance using Stargate REST API.
Use following link to get more more details about HBase/Stargate API: http://wiki.apache.org/hadoop/Hbase/Stargate.
Assumptions
This document assumes a few things about your environment in order to simplify the examples.
- The JVM is executable as simply java.
- The Apache Knox Gateway is installed and functional.
- The example commands are executed within the context of the GATEWAY_HOME current directory. The GATEWAY_HOME directory is the directory within the Apache Knox Gateway installation that contains the README file and the bin, conf and deployments directories.
- A few examples optionally require the use of commands from a standard Groovy installation. These examples are optional but to try them you will need Groovy installed.
HBase Stargate Setup
Launch Stargate
The command below launches the Stargate daemon on port 60080
/usr/lib/hbase/bin/hbase-daemon.sh start rest -p 60080
Configure Sandbox port mapping for VirtualBox
- Select the VM
- Select menu Machine>Settings...
- Select tab Network
- Select Adapter 1
- Press Port Forwarding button
- Press Plus button to insert new rule: Name=Stargate, Host Port=60080, Guest Port=60080
- Press OK to close the rule window
- Press OK to Network window save the changes
Client DSL Examples
TODO
cURL Examples
Get software version
Set Accept Header to "text/plain", "text/xml", "application/json" or "application/x-protobuf"
% curl -i -k -u bob:bob-password\ -H "Accept: application/json"\ -X GET 'https://localhost:8443/gateway/sample/hbase/api/v1/version'
Get version information regarding the HBase cluster backing the Stargate instance
Set Accept Header to "text/plain", "text/xml", "application/json" or "application/x-protobuf"
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sample/hbase/api/v1/version/cluster'
Get detailed status on the HBase cluster backing the Stargate instance.
Set Accept Header to "text/plain", "text/xml", "application/json" or "application/x-protobuf"
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sample/hbase/api/v1/status/cluster'
Get the list of available tables.
Set Accept Header to "text/plain", "text/xml", "application/json" or "application/x-protobuf"
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sample/hbase/api/v1'
Create table with two column families using xml input
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml" -H "Content-Type: text/xml"\ -d '<?xml version="1.0" encoding="UTF-8"?><TableSchema name="table1"><ColumnSchema name="family1"/><ColumnSchema name="family2"/></TableSchema>'\ -X PUT 'https://localhost:8443/gateway/sample/hbase/api/v1/table1/schema'
Create table "table2" with column families "family3" and "family4" using JSON input
% curl -i -k -u bob:bob-password\ -H "Accept: application/json" -H "Content-Type: application/json"\ -d '{"name":"table2","ColumnSchema":[{"name":"family3"},{"name":"family4"}]}'\ -X PUT 'https://localhost:8443/gateway/sample/hbase/api/v1/table2/schema'
Get table metadata
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sample/hbase/api/v1/table1/regions'
Insert single row table
% curl -i -k -u bob:bob-password\ -H "Content-Type: text/xml"\ -H "Accept: text/xml"\ -d '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="cm93MQ=="><Cell column="ZmFtaWx5MTpjb2wx" >dGVzdA==</Cell></Row></CellSet>'\ -X POST 'https://localhost:8443/gateway/sample/hbase/api/v1/table1/row1'
Insert multiple rows into table
% curl -i -k -u bob:bob-password\ -H "Content-Type: text/xml"\ -H "Accept: text/xml"\ -d '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CellSet><Row key="cm93MA=="><Cell column=" ZmFtaWx5Mzpjb2x1bW4x" >dGVzdA==</Cell></Row><Row key="cm93MQ=="><Cell column=" ZmFtaWx5NDpjb2x1bW4x" >dGVzdA==</Cell></Row></CellSet>'\ -X POST 'https://localhost:8443/gateway/sample/hbase/api/v1/table2/false-row-key'
Get all data from table
Set Accept Header to "text/plain", "text/xml", "application/json" or "application/x-protobuf"
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sample/hbase/api/v1/table1/*'
Execute cell or row query
Set Accept Header to "text/plain", "text/xml", "application/json" or "application/x-protobuf"
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sample/hbase/api/v1/table1/row1/family1:col1'
Delete entire row from table
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/sample/hbase/api/v1/table2/row0'
Delete column family from row
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/sample/hbase/api/v1/table2/row0/family3'
Delete specific column from row
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/sample/hbase/api/v1/table2/row0/family3'
Create scanner
Scanner URL will be in Location response header
% curl -i -k -u bob:bob-password\ -H "Content-Type: text/xml"\ -d '<Scanner batch="1"/>'\ -X PUT https://localhost:8443/gateway/sample/hbase/api/v1/table1/scanner
Get the values of the next cells found by the scanner
% curl -i -k -u bob:bob-password\ -H "Accept: application/json"\ https://localhost:8443/gateway/sample/hbase/api/v1/usertable/scanner/13705290446328cff5ed
Delete scanner
% curl -i -k -u bob:bob-password\ -H "Accept: text/xml"\ -X DELETE https://localhost:8443/gateway/sample/hbase/api/v1/table1/scanner/13705290446328cff5ed