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>

Reply via email to