Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase >> mail # user >> Retrieve Put timestamp

Copy link to this message
Re: Retrieve Put timestamp
We have a similar requirement and here is the solution in our mind:
add a coprocessor, in prePut() get the current ms and set it to put ---
the current implementation get the current ms and set it in put()
return the ms generated to prePut() to client. For now put() does not
return any value. we need to change the behavior of it

Any flaw in this design?


From:   lars hofhansl <[EMAIL PROTECTED]>
Date:   08/01/2012 12:37 PM
Subject:        Re: Retrieve Put timestamp

There is no HBase API for this.
However, this could useful in some scenario, so maybe we could add an API
for this.
It's not entirely trivial, though.
From: Pablo Musa <[EMAIL PROTECTED]>
Sent: Monday, July 30, 2012 3:13 PM
Subject: Retrieve Put timestamp

Hey guys,
in my application the HBase timestamp is used as version in my logic.
I would like to know what is the best way to insert a new record and get
its timestamp.

I have come up with two possibilities:

/* I could force timestamp, but it is not a good idea since different
* write into HBase which could lead to crazy behavior */
new Put(row, timestamp);

/* Or I could write into HBase and read it back. But I don't know how much
* this option causes.*/
public void put(Put put) throws IOException {
    byte[] row = put.getRow();
    KeyValue kv = hTableInterface.get(new
Get(row)).getColumnLatest(family, qualifier);
    long version = kv.getTimestamp();

Is there any better way to do it?