I'd have to look at the shell code, but its probably that the shell is building the query to be 'give me the KV at TS=19'. The Java API lets you specify both 'give me exact time' and 'give me time range'.
-ryan On Thu, Nov 18, 2010 at 9:17 PM, Pan W <[email protected]> wrote: > Hi, > > I am using hbase shell to verify some konwleges that I have read from > the post of "Understanding HBase and BigTable" > > That post says: "If an application asks for a given row at a given timestamp, > HBase will return cell data where the timestamp is less than or equal to > the one provided." > After some experiments, I feel confused about the concept of "less than" . > > Describe details in the following : > 1) create table: > create 'table', {NAME=>'cf1', VERSIONS=>3} > > 2) put some data in one cell with multi-version: > put 'table', 'row1', 'cf1:c1' , 'aaaa', 16 > put 'table', 'row1', 'cf1:c1' , 'bbbb', 25 > put 'table', 'row1', 'cf1:c1' , 'dddd', 32 > > 3) get data: > get 'table', 'row1', {COLUMN=>'cf1:c1', TIMESTAMP=>19} > > The result is NULL. > As the post says, The 'bbbb' with timestamp 16 that "less than" 19 should be > returned, > Why get nothing? > (p.s I write some java code to verify the "less than" concept using > method setTimestamp(19) of class Get, and get same result . ) > > > In addition, one more questions: > When I create table with parameter "VERSIONS=>3", means in one cell > only has not more than three version datas, is right? > If right, when I put more data into same cell, such as: > put 'table', 'row1', 'cf1:c1' ,'ffff', 42 > Have four versions or three versions in this cell now? > why I can still retireve the oldest version data with timestamp 16? > hbase(main):022:0> get 'table', 'row1', {COLUMN=>'cf1:c1', TIMESTAMP=>16} > COLUMN CELL > cf1:c1 timestamp=16, value=aaaa > > > Sorry about the long mail, any help will be appreciated. > -- > Pan W <[email protected]> > >
