hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Buttler, David" <buttl...@llnl.gov>
Subject RE: Persist JSON into HBase
Date Mon, 31 Jan 2011 20:20:19 GMT
How you serialize your objects to hbase depends on how you want to use your objects later.
 Assuming that you have a good serialization to json already, and all you want to do is put
and get the items, then just convert your json string to a byte array and put it in a column
qualifier (e.g. Table name: 'Person'; Column Family name: 'a'; Column Qualifier name: 'json').

However, if you want to scan your table and only pull out rows with certain attribute conditions
(say, person names starting with 'A'), you may want to push the filter to the server and not
have to pull out every single json object to your client, deserialize it, and then check the
condition.  In that case, you may want to have each of your objects fields be a Column Qualifier
(maybe in addition to the json, maybe as an alternative serialization).

Does that make sense?

-----Original Message-----
From: Pablo Molnar [mailto:pablomolnar@gmail.com] 
Sent: Monday, January 31, 2011 12:09 PM
To: user@hbase.apache.org
Subject: Re: Persist JSON into HBase

Thanks for the feedback Stack!
So you suggest to just serialize the JSON represent as a String or as a Map?

Something like this:

(supposing item is a String or a Map)

Put row = new Put(Bytes.toBytes(item.id))
row.add(Bytes.toBytes("json"), Bytes.toBytes("1"), Bytes.toBytes(item))

What should I use as qualifier in this case?
Is this way the json efficiently persisted?
HBase does not offer a Map serializer? Should I use
myObjectOutputStream.writeObject(map) ?

Thanks again,

On Mon, Jan 31, 2011 at 4:48 PM, Stack <stack@duboce.net> wrote:

> Don't use MapWritable.
> In the layer above HBase, inside whatever is hosting the HBase client,
> serialize the JSON to bytes and then write that to an HBase cell.  In
> the same layer, reading, do the deserializations.
> HBase only does byte arrays.
> St.Ack
> On Mon, Jan 31, 2011 at 11:30 AM, Pablo Molnar <pablomolnar@gmail.com>
> wrote:
> > Hi everyone,
> >
> > In my company we are experimenting with HBase and I'd like to know the
> best
> > way to persist a semi-structured complex (3 levels) entity represented as
> > JSON to HBase.
> > I've already done successfully a Java client that persist rows in a table
> > and now my target is persist this JSON.
> >
> > I've looked through the api and found a MapWritable class that could be
> > usefull because for me is very easy to convert the JSON enitity into a
> Map
> > and then persist it.
> >
> > I really appreciate some example how I could implement this
> > If this is possible my next concerns would be how about if I want to
> create
> > and index by a key (of the Map)?
> >
> > Thanks in advance,
> > Pablo Molnar
> >

View raw message