You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@accumulo.apache.org by Aru Sahni <ar...@gmail.com> on 2013/10/22 14:05:08 UTC

Pyaccumulo deletions

Hi,

I'm new to Accumulo and am still trying to wrap my head around its ways. To
further that challenge, I'm using Pyaccumulo, which doesn't present much in
terms of available reference material.

Right now I'm trying to understand how Accumulo manages record (key-value
pair) deletions.

conn = Accumulo(host, port, user, password)
table = 'test_table'
conn.create_table(table)
writer = conn.create_batch_writer(table)
mut = Mutation('mut_01')
mut.put(cf='item', cq='name', value='car')
writer.add_mutation(mut)
writer.close()
conn.close()

Will generate a record (found via a shell scan):

mut_01 item:name []    car

However the subsequent mutation...

writer = conn.create_batch_writer(table)
mut = Mutation('mut_01')
mut.put(cf='item', cq='name', is_delete=True)
writer.add_mutation(mut)
writer.close()

Results in:

mut_01 item:name []

How should one expect the deleted row to be represented? That record sticks
around even after I force a compaction of the table.  I was expecting it to
not show up in any iterators, or at least provide an easy way to see if the
cell has been deleted.

Thanks in advance for the help,
~A

Re: Pyaccumulo deletions

Posted by Aru Sahni <ar...@gmail.com>.
Thanks! The timestamp workaround did the trick.
On Oct 22, 2013 10:32 AM, "Eric Newton" <er...@gmail.com> wrote:

> ACCUMULO-1800 has been fixed in the 1.4, 1.5 and master branches.
>
> -Eric
>
> On Tue, Oct 22, 2013 at 10:12 AM, Eric Newton <er...@gmail.com>
> wrote:
> > Thanks for the report.  I've confirmed the problem and created
> ACCUMULO-1800.
> >
> > If you set the timestamp on your mutation (to the current time in
> > millis) it should work.
> >
> > -Eric
> >
> >
> > On Tue, Oct 22, 2013 at 8:05 AM, Aru Sahni <ar...@gmail.com> wrote:
> >> Hi,
> >>
> >> I'm new to Accumulo and am still trying to wrap my head around its
> ways. To
> >> further that challenge, I'm using Pyaccumulo, which doesn't present
> much in
> >> terms of available reference material.
> >>
> >> Right now I'm trying to understand how Accumulo manages record
> (key-value
> >> pair) deletions.
> >>
> >> conn = Accumulo(host, port, user, password)
> >> table = 'test_table'
> >> conn.create_table(table)
> >> writer = conn.create_batch_writer(table)
> >> mut = Mutation('mut_01')
> >> mut.put(cf='item', cq='name', value='car')
> >> writer.add_mutation(mut)
> >> writer.close()
> >> conn.close()
> >>
> >> Will generate a record (found via a shell scan):
> >>
> >> mut_01 item:name []    car
> >>
> >> However the subsequent mutation...
> >>
> >> writer = conn.create_batch_writer(table)
> >> mut = Mutation('mut_01')
> >> mut.put(cf='item', cq='name', is_delete=True)
> >> writer.add_mutation(mut)
> >> writer.close()
> >>
> >> Results in:
> >>
> >> mut_01 item:name []
> >>
> >> How should one expect the deleted row to be represented? That record
> sticks
> >> around even after I force a compaction of the table.  I was expecting
> it to
> >> not show up in any iterators, or at least provide an easy way to see if
> the
> >> cell has been deleted.
> >>
> >> Thanks in advance for the help,
> >> ~A
>

Re: Pyaccumulo deletions

Posted by Eric Newton <er...@gmail.com>.
ACCUMULO-1800 has been fixed in the 1.4, 1.5 and master branches.

-Eric

On Tue, Oct 22, 2013 at 10:12 AM, Eric Newton <er...@gmail.com> wrote:
> Thanks for the report.  I've confirmed the problem and created ACCUMULO-1800.
>
> If you set the timestamp on your mutation (to the current time in
> millis) it should work.
>
> -Eric
>
>
> On Tue, Oct 22, 2013 at 8:05 AM, Aru Sahni <ar...@gmail.com> wrote:
>> Hi,
>>
>> I'm new to Accumulo and am still trying to wrap my head around its ways. To
>> further that challenge, I'm using Pyaccumulo, which doesn't present much in
>> terms of available reference material.
>>
>> Right now I'm trying to understand how Accumulo manages record (key-value
>> pair) deletions.
>>
>> conn = Accumulo(host, port, user, password)
>> table = 'test_table'
>> conn.create_table(table)
>> writer = conn.create_batch_writer(table)
>> mut = Mutation('mut_01')
>> mut.put(cf='item', cq='name', value='car')
>> writer.add_mutation(mut)
>> writer.close()
>> conn.close()
>>
>> Will generate a record (found via a shell scan):
>>
>> mut_01 item:name []    car
>>
>> However the subsequent mutation...
>>
>> writer = conn.create_batch_writer(table)
>> mut = Mutation('mut_01')
>> mut.put(cf='item', cq='name', is_delete=True)
>> writer.add_mutation(mut)
>> writer.close()
>>
>> Results in:
>>
>> mut_01 item:name []
>>
>> How should one expect the deleted row to be represented? That record sticks
>> around even after I force a compaction of the table.  I was expecting it to
>> not show up in any iterators, or at least provide an easy way to see if the
>> cell has been deleted.
>>
>> Thanks in advance for the help,
>> ~A

Re: Pyaccumulo deletions

Posted by Eric Newton <er...@gmail.com>.
Thanks for the report.  I've confirmed the problem and created ACCUMULO-1800.

If you set the timestamp on your mutation (to the current time in
millis) it should work.

-Eric


On Tue, Oct 22, 2013 at 8:05 AM, Aru Sahni <ar...@gmail.com> wrote:
> Hi,
>
> I'm new to Accumulo and am still trying to wrap my head around its ways. To
> further that challenge, I'm using Pyaccumulo, which doesn't present much in
> terms of available reference material.
>
> Right now I'm trying to understand how Accumulo manages record (key-value
> pair) deletions.
>
> conn = Accumulo(host, port, user, password)
> table = 'test_table'
> conn.create_table(table)
> writer = conn.create_batch_writer(table)
> mut = Mutation('mut_01')
> mut.put(cf='item', cq='name', value='car')
> writer.add_mutation(mut)
> writer.close()
> conn.close()
>
> Will generate a record (found via a shell scan):
>
> mut_01 item:name []    car
>
> However the subsequent mutation...
>
> writer = conn.create_batch_writer(table)
> mut = Mutation('mut_01')
> mut.put(cf='item', cq='name', is_delete=True)
> writer.add_mutation(mut)
> writer.close()
>
> Results in:
>
> mut_01 item:name []
>
> How should one expect the deleted row to be represented? That record sticks
> around even after I force a compaction of the table.  I was expecting it to
> not show up in any iterators, or at least provide an easy way to see if the
> cell has been deleted.
>
> Thanks in advance for the help,
> ~A