Hello, I think you can use HBase org.apache.hadoop.hbase.client.Delete class. It already supported to delete a specific version in a cell, see public Delete deleteColumn(byte[] family, byte[] qualifier, long timestamp) method.
regards! Yong On Thu, Mar 7, 2013 at 9:25 PM, Jonathan Natkins <na...@wibidata.com> wrote: > For those who care, it turns out that this use case is currently possible, > just not through the hbase shell: > > hbase(main):002:0> scan 'del_test', { VERSIONS => 10 } > ROW COLUMN+CELL > > > key column=f1:c1, timestamp=5, > value=value5 > > key column=f1:c1, timestamp=4, > value=value4 > > key column=f1:c1, timestamp=2, > value=value2 > > key column=f1:c1, timestamp=1, > value=value1 > > 1 row(s) in 0.0650 seconds > > Here's a small program to try it yourself: > https://gist.github.com/jnatkins/5111513 > > > > On Thu, Mar 7, 2013 at 10:49 AM, Kevin O'dell <kevin.od...@cloudera.com>wrote: > >> Ted, >> >> Yes that is correct, sorry 3 is newer than 1 when speak TSs. Sorry for >> the confusion :) >> >> On Thu, Mar 7, 2013 at 1:48 PM, Ted Yu <yuzhih...@gmail.com> wrote: >> >> > I think there was typo in Kevin's email: t3 should be t1 >> > >> > On Thu, Mar 7, 2013 at 10:42 AM, Kevin O'dell <kevin.od...@cloudera.com >> > >wrote: >> > >> > > JM, >> > > >> > > If you delete t2, you will also wipe out t3 right now. >> > > >> > > On Thu, Mar 7, 2013 at 1:37 PM, Jean-Marc Spaggiari < >> > > jean-m...@spaggiari.org >> > > > wrote: >> > > >> > > > Kevin, >> > > > >> > > > How do you see that? Like a specific cell format which can "cancel" >> > > > once timestamp and no delete all the previous one? >> > > > >> > > > Like before compaction we can have >> > > > >> > > > v1:t1 >> > > > v1:t2 >> > > > v1:t3 >> > > > v1:d2 <= Delete only t2 version. >> > > > >> > > > And at compaction time we only keep that in mind and give this as a >> > > result: >> > > > v1:t1 >> > > > v1:t3 >> > > > >> > > > ? >> > > > >> > > > 2013/3/7 Jeff Kolesky <j...@opower.com>: >> > > > > Yes, this behavior would be fantastic. If you follow the Kiji/Wibi >> > > model >> > > > > of using many versioned cells, being able to delete a specific cell >> > > > without >> > > > > deleting all cells prior to it would be very useful. >> > > > > >> > > > > Jeff >> > > > > >> > > > > >> > > > > On Thu, Mar 7, 2013 at 10:26 AM, Kevin O'dell < >> > > kevin.od...@cloudera.com >> > > > >wrote: >> > > > > >> > > > >> The problem is it kills all older cells. We should probably file >> a >> > > JIRA >> > > > >> for this, as this behavior would be nice. Thoughts?: >> > > > >> >> > > > >> hbase(main):028:0> truncate 'tre' >> > > > >> >> > > > >> Truncating 'tre' table (it may take a while): >> > > > >> >> > > > >> - Disabling table... >> > > > >> >> > > > >> - Dropping table... >> > > > >> >> > > > >> - Creating table... >> > > > >> >> > > > >> 0 row(s) in 4.6060 seconds >> > > > >> >> > > > >> >> > > > >> hbase(main):029:0> put 'tre', 'row1', 'cf1:c1', 'abc', 111 >> > > > >> >> > > > >> 0 row(s) in 0.0220 seconds >> > > > >> >> > > > >> >> > > > >> hbase(main):030:0> put 'tre', 'row1', 'cf1:c1', 'abcd', 112 >> > > > >> >> > > > >> 0 row(s) in 0.0060 seconds >> > > > >> >> > > > >> >> > > > >> hbase(main):031:0> put 'tre', 'row1', 'cf1:c1', 'abce', 113 >> > > > >> >> > > > >> 0 row(s) in 0.0120 seconds >> > > > >> >> > > > >> >> > > > >> hbase(main):032:0> scan 'tre', {NAME => 'cf1:c1', VERSIONS => 4} >> > > > >> >> > > > >> ROW >> > > COLUMN+CELL >> > > > >> >> > > > >> >> > > > >> >> > > > >> >> > > > >> row1 >> > > > column=cf1:c1, >> > > > >> timestamp=113, value=abce >> > > > >> >> > > > >> >> > > > >> >> > > > >> row1 >> > > > column=cf1:c1, >> > > > >> timestamp=112, value=abcd >> > > > >> >> > > > >> >> > > > >> >> > > > >> row1 >> > > > column=cf1:c1, >> > > > >> timestamp=111, value=abc >> > > > >> >> > > > >> >> > > > >> hbase(main):033:0> delete 'tre', 'row1', 'cf1:c1', 112 >> > > > >> >> > > > >> 0 row(s) in 0.0110 seconds >> > > > >> >> > > > >> >> > > > >> hbase(main):034:0> scan 'tre', {NAME => 'cf1:c1', VERSIONS => 4} >> > > > >> >> > > > >> ROW >> > > COLUMN+CELL >> > > > >> >> > > > >> >> > > > >> >> > > > >> >> > > > >> row1 >> > > > column=cf1:c1, >> > > > >> timestamp=113, value=abce >> > > > >> >> > > > >> >> > > > >> >> > > > >> 1 row(s) in 0.0290 seconds >> > > > >> >> > > > >> >> > > > >> On Thu, Mar 7, 2013 at 1:22 PM, Sergey Shelukhin < >> > > > ser...@hortonworks.com >> > > > >> >wrote: >> > > > >> >> > > > >> > Shouldn't you be able to insert delete with t belonging to (t2, >> > t3) >> > > to >> > > > >> > achieve this effect? >> > > > >> > >> > > > >> > On Thu, Mar 7, 2013 at 10:12 AM, Jonathan Natkins < >> > > na...@wibidata.com >> > > > >> > >wrote: >> > > > >> > >> > > > >> > > Yep, that's the scenario I was curious about. Thanks! >> > > > >> > > >> > > > >> > > >> > > > >> > > On Thu, Mar 7, 2013 at 10:04 AM, Jean-Marc Spaggiari < >> > > > >> > > jean-m...@spaggiari.org> wrote: >> > > > >> > > >> > > > >> > > > Hi Jonathan, >> > > > >> > > > >> > > > >> > > > Is that what you mean? >> > > > >> > > > >> > > > >> > > > In the same CF:C >> > > > >> > > > insert r1 v1 t1 >> > > > >> > > > insert r1 v2 t2 >> > > > >> > > > insert r1 v3 t3 >> > > > >> > > > >> > > > >> > > > Then you want to be able to delete r1 v3 t3 to see r1 v2? >> > > > >> > > > >> > > > >> > > > This is not possible. If you put a delete with t4, >> everything >> > > > older >> > > > >> > > > than t4 will be deleted when the compression will occur. >> > > > >> > > > >> > > > >> > > > JM >> > > > >> > > > >> > > > >> > > > 2013/3/7 Jonathan Natkins <na...@wibidata.com>: >> > > > >> > > > > It was suggested to me that there might be a way to >> delete a >> > > > cell >> > > > >> in >> > > > >> > a >> > > > >> > > > > column for a particular timestamp, without masking all >> older >> > > > >> values. >> > > > >> > Is >> > > > >> > > > > this true? Or have I been fed lies? >> > > > >> > > > > >> > > > >> > > > > Thanks! >> > > > >> > > > > Natty >> > > > >> > > > > >> > > > >> > > > > -- >> > > > >> > > > > http://www.wibidata.com >> > > > >> > > > > office: 1.415.496.9424 x208 >> > > > >> > > > > cell: 1.609.577.1600 >> > > > >> > > > > twitter: @nattyice <http://www.twitter.com/nattyice> >> > > > >> > > > >> > > > >> > > >> > > > >> > > >> > > > >> > > >> > > > >> > > -- >> > > > >> > > http://www.wibidata.com >> > > > >> > > office: 1.415.496.9424 x208 >> > > > >> > > cell: 1.609.577.1600 >> > > > >> > > twitter: @nattyice <http://www.twitter.com/nattyice> >> > > > >> > > >> > > > >> > >> > > > >> >> > > > >> >> > > > >> >> > > > >> -- >> > > > >> Kevin O'Dell >> > > > >> Customer Operations Engineer, Cloudera >> > > > >> >> > > > > >> > > > > >> > > > > >> > > > > -- >> > > > > *Jeff Kolesky* >> > > > > Chief Software Architect >> > > > > *Opower* >> > > > >> > > >> > > >> > > >> > > -- >> > > Kevin O'Dell >> > > Customer Operations Engineer, Cloudera >> > > >> > >> >> >> >> -- >> Kevin O'Dell >> Customer Operations Engineer, Cloudera >> > > > > -- > http://www.wibidata.com > office: 1.415.496.9424 x208 > cell: 1.609.577.1600 > twitter: @nattyice <http://www.twitter.com/nattyice>