Put in Hbase using REST API(Stargate)

Hi Friends,

Today  I am going to demonstrate simple example of putting data into hbase table using Stargate REST API.

In this example , I have a simple Employee json document which I want to store into one of the cell of hbase.

Here is my sample json documen.


This sample contains employee name and employee ID. Instead of this json document i can use any other sample data which i want to store into hbase.

I created a table in hbase with table name testtable having column family as colfam1.

create 'testtable' , 'colfam1'

Now I have everything available to being with. Next step is to form you REST query and simply fire it insert data into hbase,

Here is sample example taken from https://wiki.apache.org/hadoop/Hbase/Stargate for inserting data into hbase.

curl -H "Content-Type: text/xml" --data '[...]' http://localhost:8000/test/testrow/test:testcolumn

Main job of each developer is to prepare --data information in above query. As we know , before inserting data into hbase we should first apply base64 encoding on data then we can put it into hbase,

I am putting row key 'row1' with column family 'colfam1:col1'  into hbase having data as my json document.

curl -v -X PUT -H "Content-Type: application/json" --data '{"Row":[{"key":"cm93MQ==", "Cell":[{"column":"Y29sZmFtMTpjb2wx", "$":"eyJFbXBsb3llZSI6eyJFbmFtZSI6IlNhbSIsIkVpZCI6MTJ9fQ=="}]}]}' http://hostname:8080/testtable/row1/colfam1:col1

Json format of --data information

In above json everything is base64 encode.
Encoding Data into base64 format
You can fire below command from shell and you will get base64 encoded data.

echo '{"Employee":{"Ename":"Sam","Eid":12}}' | tr -d "\n" | base64

Output : eyJFbXBsb3llZSI6eyJFbmFtZSI6IlNhbSIsIkVpZCI6MTJ9fQ==

Just to confirm , you have properly encoded data you can simply decode this informatiuon using below command

Decoding base64 information 

echo eyJFbXBsb3llZSI6eyJFbmFtZSI6IlNhbSIsIkVpZCI6MTJ9fQ== | base64 -d

It will return you actuall input information.

Once everything is done just fire above mentioned curl command , and data will be inserted into hbase.

scan 'testtable'

hbase(main):009:0> scan 'testtable'
ROW                                    COLUMN+CELL
 row1                                  column=colfam1:col1, timestamp=1438079793144, value={"Employee":{"Ename":"Sam","Eid":12}}

Hope this helps. Cheers....!!!!!


Posts les plus consultés de ce blog

Spark performance optimization: shuffle tuning

Spark optimization

Use Apache Spark to write data to ElasticSearch