Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
Accumulo, mail # user - FW: Deletes not commiting from custom java API but work in shell interface


Copy link to this message
-
Re: FW: Deletes not commiting from custom java API but work in shell interface
John Vines 2013-04-11, 14:34
Thanks for the clarification Keith, I wasn't 100% on that.
On Thu, Apr 11, 2013 at 10:01 AM, Keith Turner <[EMAIL PROTECTED]> wrote:

> On Wed, Apr 10, 2013 at 6:06 PM, John Vines <[EMAIL PROTECTED]> wrote:
> > Deletes will remove all entries which occur before the key. I believe
> there
> > is undefined behavior for when a delete key is identical. It should work
> if
> > you set the delete keys time +1.
>
> The behavior is defined when keys are identical except for delete.
> Delete is the last thing a key is sorted on, and delete keys sort
> before non delete keys.  So a delete key with timestamp T will delete
> all keys with the same row and column with timestamps <= T.
>
> >
> > Sent from my phone, please pardon the typos and brevity.
> >
> > On Apr 10, 2013 6:02 PM, "Bell, Philip S CIV SPAWARSYSCEN-PACIFIC, 81320"
> > <[EMAIL PROTECTED]> wrote:
> >>
> >> Using the following code, rows are never deleted even when identified
> and
> >> submitted for deletion to the batchwriter.
> >> After running the code the rows still show up in search.
> >>
> >> This has been seen in 1.4.1 and 1.4.2
> >>
> >> The same rows can be deleted from the accumulo shell interface
> >>
> >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> >>
> >>
> >> for( Entry<Key, Value> e : mainScanner )
> >> {
> >>         Text currentUUID = e.getKey().getRow();
> >>
> >>         Text colFam = e.getKey().getColumnFamily();
> >>         Text colQual = e.getKey().getColumnQualifier();
> >>
> >>         String colVis = e.getKey().getColumnVisibility().toString();
> >>
> >>         System.out.println( currentUUID + ":" + colFam + ":" + colQual +
> >> ":" + colVis + ":" + e.getKey().getTimestamp() );
> >>
> >>         if( colFam.toString().equalsIgnoreCase( "root" ) ||
> >> colVis.length() > 0 )
> >>         {
> >>                 Mutation delMutation = new Mutation( currentUUID );
> >>                 delMutation.putDelete( colFam, colQual, new
> >> ColumnVisibility( colVis ), e.getKey().getTimestamp() );
> >>
> >>                 System.out.println( "removing" );
> >>
> >>                 try
> >>                 {
> >>                         bw.addMutation( delMutation );
> >>                 }
> >>                 catch( MutationsRejectedException e1 )
> >>                 {
> >>                         e1.printStackTrace();
> >>                 }
> >>
> >>                 count++;
> >>                 if( count % 1000000 == 0 )
> >>                 {
> >>                         System.out.println( this.getName() + ": " +
> count
> >> + " completed in " + getTimePassed() );
> >>                 }
> >>         }
> >> }// for each entry found
> >>
> >> try
> >> {
> >>         bw.flush();
> >>         bw.close();
> >> }
> >> catch( Exception e1 )
> >> {
> >>         e1.printStackTrace();
> >> }
>