TODO
TODO
TODO
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.
The command below launches the Stargate daemon on port 60080
sudo /usr/lib/hbase/bin/hbase-daemon.sh start rest -p 60080
Port 60080 is used because it was specified in sample Hadoop cluster deployment {GATEWAY_HOME}/deployments/sandbox.xml
.
60080 pot is used because it was specified in sample Hadoop cluster deployment {GATEWAY_HOME}/deployments/sandbox.xml
.
If it becomes necessary to restart HBase you can log into the hosts running HBase and use these steps.
sudo /usr/lib/hbase/bin/hbase-daemon.sh stop rest sudo -u hbase /usr/lib/hbase/bin/hbase-daemon.sh stop regionserver sudo -u hbase /usr/lib/hbase/bin/hbase-daemon.sh stop master sudo -u hbase /usr/lib/hbase/bin/hbase-daemon.sh start regionserver sudo -u hbase /usr/lib/hbase/bin/hbase-daemon.sh start master sudo /usr/lib/hbase/bin/hbase-daemon.sh start rest -p 60080
For more details about client DSL usage please follow this [page|https://cwiki.apache.org/confluence/display/KNOX/Client+Usage].
HBase.session(session).systemVersion().now().string
HBase.session(session).clusterVersion().now().string
HBase.session(session).status().now().string
HBase.session(session).table().list().now().string
HBase.session(session).table().schema().now().string
Request
Response
Example
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()
Request
Response
Example
HBase.session(session).table(tableName).update() .family(“family1”) .attribute(“fm_attr1”, “new_value3”) .endFamilyDef() .family(“family4”) .attribute(“fm_attr3”, “value6”) .endFamilyDef() .now()```
HBase.session(session).table(tableName).regions().now().string
HBase.session(session).table(tableName).delete().now()
Request
Response
Example
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()
rowId is optional. Querying with null or empty rowId will select all rows.
Request
Response
Example
HBase.session(session).table(tableName).row(“row_id_1”) .query() .now().string
HBase.session(session).table(tableName).row().query().now().string
HBase.session(session).table(tableName).row().query() .column(“family1”, “row2_col1”) .column(“family2”) .times(0, Long.MAX_VALUE) .numVersions(1) .now().string
Request
Response
Example
HBase.session(session).table(tableName).row(“row_id_1”) .delete() .column(“family1”, “col1”) .now()```
HBase.session(session).table(tableName).row(“row_id_1”) .delete() .column(“family2”) .time(Long.MAX_VALUE) .now()```
Request
Response
Example
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()```
HBase.session(session).table(tableName).scanner(scannerId).getNext().now().string
HBase.session(session).table(tableName).scanner(scannerId).delete().now()
This example illustrates sequence of all basic HBase operations:
There are several ways to do this depending upon your preference.
You can use the Groovy interpreter provided with the distribution.
java -jar bin/shell.jar samples/ExampleHBase.groovy
You can manually type in the KnoxShell DSL script into the interactive Groovy interpreter provided with the distribution.
java -jar bin/shell.jar
Each line from the file below will need to be typed or copied into the interactive shell.
/** * 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/sandbox" 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)
Set Accept Header to “text/plain”, “text/xml”, “application/json” or “application/x-protobuf”
% curl -ik -u guest:guest-password\ -H "Accept: application/json"\ -X GET 'https://localhost:8443/gateway/sandbox/hbase/version'
Set Accept Header to “text/plain”, “text/xml” or “application/x-protobuf”
% curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sandbox/hbase/version/cluster'
Set Accept Header to “text/plain”, “text/xml”, “application/json” or “application/x-protobuf”
curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sandbox/hbase/status/cluster'
Set Accept Header to “text/plain”, “text/xml”, “application/json” or “application/x-protobuf”
curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sandbox/hbase'
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/sandbox/hbase/table1/schema'
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/sandbox/hbase/table2/schema'
curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sandbox/hbase/table1/regions'
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/sandbox/hbase/table1/row1'
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/sandbox/hbase/table2/false-row-key'
Set Accept Header to “text/plain”, “text/xml”, “application/json” or “application/x-protobuf”
curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sandbox/hbase/table1/*'
Set Accept Header to “text/plain”, “text/xml”, “application/json” or “application/x-protobuf”
curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X GET 'https://localhost:8443/gateway/sandbox/hbase/table1/row1/family1:col1'
curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/sandbox/hbase/table2/row0'
curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/sandbox/hbase/table2/row0/family3'
curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/sandbox/hbase/table2/row0/family3'
Scanner URL will be in Location response header
curl -ik -u guest:guest-password\ -H "Content-Type: text/xml"\ -d '<Scanner batch="1"/>'\ -X PUT 'https://localhost:8443/gateway/sandbox/hbase/table1/scanner'
curl -ik -u guest:guest-password\ -H "Accept: application/json"\ -X GET 'https://localhost:8443/gateway/sandbox/hbase/table1/scanner/13705290446328cff5ed'
curl -ik -u guest:guest-password\ -H "Accept: text/xml"\ -X DELETE 'https://localhost:8443/gateway/sandbox/hbase/table1/scanner/13705290446328cff5ed'
curl -ik -u guest:guest-password\ -X DELETE 'https://localhost:8443/gateway/sandbox/hbase/table1/schema'