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.
Table of Contents | ||||
---|---|---|---|---|
|
Assumptions
This document assumes a few things about your environment in order to simplify the examples.
...
Code Block |
---|
sudo /usr/lib/hbase/bin/hbase-daemon.sh start rest -p 60080 |
60080 post is used because it was specified in sample Hadoop cluster deployment {GATEWAY_HOME
}/deployments/sample.xml.
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
...
60080 post is used because it was specified in sample Hadoop cluster deployment {GATEWAY_HOME
}/deployments/sample.xml.
HBase/Stargate via KnoxShell DSL
Usage
For more details about client DSL usage please follow this page.
...
Code Block | ||
---|---|---|
| ||
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.hadoop.gateway.shell.hbase import org.apache.hadoop.gateway.shell.Hadoop import static java.util.concurrent.TimeUnit.SECONDS gateway = "https://localhost:8443/gateway/samplesandbox" username = "guest" password = "guest-password" tableName = "test_table" session = Hadoop.login(gateway, username, password) println "System version : " + HBase.session(session).systemVersion().now().string println "Cluster version : " + HBase.session(session).clusterVersion().now().string println "Status : " + HBase.session(session).status().now().string println "Creating table '" + tableName + "'..." HBase.session(session).table(tableName).create() \ .attribute("tb_attr1", "value1") \ .attribute("tb_attr2", "value2") \ .family("family1") \ .attribute("fm_attr1", "value3") \ .attribute("fm_attr2", "value4") \ .endFamilyDef() \ .family("family2") \ .family("family3") \ .endFamilyDef() \ .attribute("tb_attr3", "value5") \ .now() println "Done" println "Table List : " + HBase.session(session).table().list().now().string println "Schema for table '" + tableName + "' : " + HBase.session(session) \ .table(tableName) \ .schema() \ .now().string println "Updating schema of table '" + tableName + "'..." HBase.session(session).table(tableName).update() \ .family("family1") \ .attribute("fm_attr1", "new_value3") \ .endFamilyDef() \ .family("family4") \ .attribute("fm_attr3", "value6") \ .endFamilyDef() \ .now() println "Done" println "Schema for table '" + tableName + "' : " + HBase.session(session) \ .table(tableName) \ .schema() \ .now().string println "Inserting data into table..." HBase.session(session).table(tableName).row("row_id_1").store() \ .column("family1", "col1", "col_value1") \ .column("family1", "col2", "col_value2", 1234567890l) \ .column("family2", null, "fam_value1") \ .now() HBase.session(session).table(tableName).row("row_id_2").store() \ .column("family1", "row2_col1", "row2_col_value1") \ .now() println "Done" println "Querying row by id..." println HBase.session(session).table(tableName).row("row_id_1") \ .query() \ .now().string println "Querying all rows..." println HBase.session(session).table(tableName).row().query().now().string println "Querying row by id with extended settings..." println HBase.session(session).table(tableName).row().query() \ .column("family1", "row2_col1") \ .column("family2") \ .times(0, Long.MAX_VALUE) \ .numVersions(1) \ .now().string println "Deleting cell..." HBase.session(session).table(tableName).row("row_id_1") \ .delete() \ .column("family1", "col1") \ .now() println "Rows after delete:" println HBase.session(session).table(tableName).row().query().now().string println "Extended cell delete" HBase.session(session).table(tableName).row("row_id_1") \ .delete() \ .column("family2") \ .time(Long.MAX_VALUE) \ .now() println "Rows after delete:" println HBase.session(session).table(tableName).row().query().now().string println "Table regions : " + HBase.session(session).table(tableName) \ .regions() \ .now().string println "Creating scanner..." scannerId = HBase.session(session).table(tableName).scanner().create() \ .column("family1", "col2") \ .column("family2") \ .startRow("row_id_1") \ .endRow("row_id_2") \ .batch(1) \ .startTime(0) \ .endTime(Long.MAX_VALUE) \ .filter("") \ .maxVersions(100) \ .now().scannerId println "Scanner id=" + scannerId println "Scanner get next..." println HBase.session(session).table(tableName).scanner(scannerId) \ .getNext() \ .now().string println "Dropping scanner with id=" + scannerId HBase.session(session).table(tableName).scanner(scannerId).delete().now() println "Done" println "Dropping table '" + tableName + "'..." HBase.session(session).table(tableName).delete().now() println "Done" session.shutdown(10, SECONDS) |
HBase/Stargate via cURL
...
Get software version
Set Accept Header to "text/plain", "text/xml", "application/json" or "application/x-protobuf"
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: application/json"\ -X GET 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/version' |
Get version information regarding the HBase cluster backing the Stargate instance
...
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/versionversion/cluster' |
Get detailed status on the HBase cluster backing the Stargate instance.
...
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/status/cluster' |
Get the list of available tables.
...
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1' |
Create table with two column families using xml input
Code Block |
---|
% curl -ik -u guest:guest-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/samplesandbox/hbase/api/v1/table1/schema' |
Create table with two column families using JSON input
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: application/json" -H "Content-Type: application/json"\ -d '{"name":"table2","ColumnSchema":[{"name":"family3"},{"name":"family4"}]}'\ -X PUT 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/table2/schema' |
Get table metadata
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/table1/regions' |
Insert single row table
Code Block |
---|
% curl -ik -u guest:guest-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/samplesandbox/hbase/api/v1/table1/row1' |
Insert multiple rows into table
Code Block |
---|
% curl -ik -u guest:guest-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/samplesandbox/hbase/api/v1/table2/false-row-key' |
Get all data from table
...
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/table1/*' |
Execute cell or row query
...
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/table1/row1/family1:col1' |
...
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/table2/row0' |
Delete column family from row
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/table2/row0/family3' |
Delete specific column from row
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/table2/row0/family3' |
Create scanner
...
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Content-Type: text/xml"\ -d '<Scanner batch="1"/>'\ -X PUT 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/table1/scanner' |
Get the values of the next cells found by the scanner
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: application/json"\ -X GET 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/table1/scanner/13705290446328cff5ed' |
...
Code Block |
---|
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/samplesandbox/hbase/api/v1/table1/scanner/13705290446328cff5ed' |
Delete table
Code Block |
---|
% curl -ik -u guest:guest-password\
-X DELETE 'https://localhost:8443/gateway/sandbox/hbase/table1/schema'
|