There are few  ways to look at it:

1) Lets say your row key is a LONG value that keeps incrementing for every 
writes, then, you can use, HTable.getRowOrBefore method multiple times to get 
hold of latest N entries.  For the first call, you can pass Long.MAX_VALUE as 
row key, the HBase will return you the row with key just less than 
Long.MAX_VALUE, and in this case, it will be the latest row key.  Let's call 
this "latestRowKey".  For next call to "getRowOrBefore", you can pass 
"latestRowKey - 1" as row key, and so on.

    
http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#getRowOrBefore(byte[],
 byte[])


2) Another variant of above approach can be wherein your row key is 
"<timestamp>".  In this case, you can pass the current time to first call to 
"getRowOrBefore" and (latestRowKey - 1) to subsequent calls.


3) Use reverse timestamp.  This is discussed in Hbase chapter in "Hadoop - The 
definitive guide book".
   If you use row key as  Long.MAX_VALUE - System.currentTimeInMillis(), then, 
all the latest entries will show up first if you do a Scan on the table.
   This way first N entries will be your latest N entries.


Regards,
Srikanth


-----Original Message-----
From: Harsh J [mailto:[email protected]]
Sent: Tuesday, July 26, 2011 10:25 PM
To: [email protected]
Subject: Re: Retrieving last 100 rows by timestamp

Hello Ajay,

See the recent mailing list discussion on using reverse timestamps in key. It 
should help your case, I think.

On 26-Jul-2011, at 8:50 PM, Something Something wrote:

> Hello,
>
> Need to create a report that shows 'last 100 rows by timestamp'.  This query
> should return almost instantaneously.  Any recommendation regarding the
> design?  I was thinking of creating a table with 'sequence #' as a key and
> value would be 'key of another table that contains the master data'.
> Anyway, I will think some more, but if anyone has done something similar, I
> would greatly appreciate it if they would share the knowledge.  Thanks.
>
> - Ajay


________________________________

http://www.mindtree.com/email/disclaimer.html

Reply via email to