Dear Harsh, Thank you very much for your detailed explanation. I could understand what had been going on during my put/scan/delete operations. I'll modify my application and test programs taking the timestamp implementation into consideration.
Best Regards, Takahiko Kawasaki 2012/8/15 Harsh J <ha...@cloudera.com> > When a Delete occurs, an insert is made with the timestamp being the > current time (to indicate it is the latest version). Hence, when you > insert a value after this with an _older_ timestamp, it is not taken > in as the latest version, and is hence ignored when scanning. This is > why you do not see the data. > > If you instead insert this after a compaction has fully run on this > store file, then your value will indeed get shown after insert, cause > at that moment there wouldn't exist such a row with a latest timestamp > at all. > > hbase(main):060:0> flush 'test-table' > 0 row(s) in 0.1020 seconds > > hbase(main):061:0> major_compact 'test-table' > 0 row(s) in 0.0400 seconds > > hbase(main):062:0> put 'test-table', 'row4', 'test-family', 'value', 10 > 0 row(s) in 0.0230 seconds > > hbase(main):063:0> scan 'test-table' > ROW COLUMN+CELL > row4 column=test-family:, timestamp=10, value=value > 1 row(s) in 0.0060 seconds > > I suppose this is why it is recommended not to mess with the > timestamps manually, and instead just rely on versions. > > On Tue, Aug 14, 2012 at 8:24 PM, Takahiko Kawasaki <daru...@gmail.com> > wrote: > > Hello, > > > > I have a problem where 'put' with timestamp does not succeed. > > I did the following at the HBase shell. > > > > (1) Do 'put' with timestamp. > > # 'scan' shows 1 row. > > > > (2) Delete the row by 'deleteall'. > > # 'scan' says "0 row(s)". > > > > (3) Do 'put' again by the same command line as (1). > > # 'scan' says "0 row(s)" ! Why? > > > > (4) Increment the timestamp value by 1 and try 'put' again. > > # 'scan' still says "0 row(s)"! Why? > > > > The command lines I actually typed are as follows and the attached > > file is the output from the command lines. > > > > scan 'test-table' > > put 'test-table', 'row3', 'test-family', 'value' > > scan 'test-table' > > deleteall 'test-table', 'row3' > > scan 'test-table' > > put 'test-table', 'row3', 'test-family', 'value' > > scan 'test-table' > > deleteall 'test-table', 'row3' > > scan 'test-table' > > put 'test-table', 'row4', 'test-family', 'value', 10 > > scan 'test-table' > > deleteall 'test-table', 'row4' > > scan 'test-table' > > put 'test-table', 'row4', 'test-family', 'value', 10 > > scan 'test-table' > > put 'test-table', 'row4', 'test-family', 'value', 10 > > scan 'test-table' > > quit > > > > Is this behavior the HBase specification? > > > > My cluster is built using CDH4 and the HBase version is 0.92.1-cdh4.0.0. > > > > Could anyone give me any insight, please? > > > > Best Regards, > > Takahiko Kawasaki > > > > -- > Harsh J >