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

Switch to Threaded View
Accumulo, mail # user - How to remove entire row at the server side?


Copy link to this message
-
Re: How to remove entire row at the server side?
David Medinets 2013-11-07, 02:06
Just in case you didn't know there is a 'classpath' command in the Accumulo
shell which should list your custom jar. It's handy to verify that it was
loaded. I think there might also be a log entry if you have access to them.
I've also found it useful to use 'jar tf <filename> on the Accumulo nodes
to verify the jar file contents. Sometimes I've deployed the wrong version
of a jar file.
On Wed, Nov 6, 2013 at 7:56 PM, Billie Rinaldi <[EMAIL PROTECTED]>wrote:

> Making your class "extends RowFilter implements OptionDescriber" should be
> fine.  One reason it might have been complaining about the @Override
> annotations is if the Java compiler is set to 1.5 compatibility rather than
> 1.6.
>
> Regarding getting the same error, did you replace all the jars containing
> your iterator on all the nodes?  If you did, perhaps it's not reloading the
> jars properly.  You could restart accumulo to make sure it's using the
> fresh jar, or you could try renaming your class and dropping it in with a
> different jar name to ensure the new code is being picked up.
>
>
> On Wed, Nov 6, 2013 at 2:50 PM, Terry P. <[EMAIL PROTECTED]> wrote:
>
>> Hi Billie,
>> Many thanks for your help.  I added those two methods, but had to remove
>> the @Override as the RowFilter class I'm extending from doesn't implement
>> them.  Even with these methods in place, I still get the same error trying
>> to add the iterator in the shell.
>>
>> I notice that the RowFilter class extends WrappingIterator, which also
>> doesn't appear to have the describeOptions and validateOptions methods ...
>> should I try extending from just the Filter class?  I didn't understand the
>> benefits William listed of extending from the RowFilter class.  I just know
>> that once I identify a RowKey should be purged based on its expTs ColFam
>> Value, I want to remove all entries for that RowKey.
>>
>>
>> On Wed, Nov 6, 2013 at 3:29 PM, Billie Rinaldi <[EMAIL PROTECTED]>wrote:
>>
>>> To use setiter in the shell, your iterator must implement
>>> OptionDescriber.  It has two methods, and something like the following
>>> should work for your iterator.  If you implement passing options to the
>>> iterator, you'll want to change the null parameters to the constructor of
>>> IteratorOptions below, and probably also to do some validation in
>>> validateOptions.
>>>
>>>   @Override
>>>   public IteratorOptions describeOptions() {
>>>     return new IteratorOptions("expTs", "Removes rows based on the
>>> column designated as the expiration timestamp column family", null, null);
>>>   }
>>>
>>>   @Override
>>>   public boolean validateOptions(Map<String,String> options) {
>>>     return true;
>>>   }
>>>
>>>
>>>
>>> On Wed, Nov 6, 2013 at 12:49 PM, Terry P. <[EMAIL PROTECTED]> wrote:
>>>
>>>> Eyes of an eagle Billie!  com is correct, but after viewing
>>>> "org.apache.accumulo" so many times, my brain was stuck on org and I goofed
>>>> in my setiter syntax.
>>>>
>>>> With THAT corrected, here is the new error:
>>>>
>>>> root@meta> setiter -class
>>>> com.esa.accumulo.iterators.ExpirationTimestampPurgeFilter -n expTsFilter -p
>>>> 20 -scan -t itertest
>>>> 2013-11-06 14:46:28,280 [shell.Shell] ERROR:
>>>> org.apache.accumulo.core.util.shell.ShellCommandException: Command could
>>>> not be initialized (Unable to load
>>>> com.esa.accumulo.iterators.ExpirationTimestampPurgeFilter as type
>>>> org.apache.accumulo.core.iterators.OptionDescriber; configure with 'config'
>>>> instead)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Nov 6, 2013 at 2:43 PM, Billie Rinaldi <
>>>> [EMAIL PROTECTED]> wrote:
>>>>
>>>>> Is there a typo in the package name?  One place says "com" and the
>>>>> other "org".
>>>>>
>>>>>
>>>>> On Wed, Nov 6, 2013 at 12:37 PM, Terry P. <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>>> Hi William, many thanks for the explanation of scan time versus
>>>>>> compaction time. I'll look through the classes again and note where the
>>>>>> remove versus suppress wordings are used and open a ticket.