[
https://issues.apache.org/jira/browse/ACCUMULO-2911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14122147#comment-14122147
]
Christopher Tubbs commented on ACCUMULO-2911:
---------------------------------------------
I would not depend on the shell's table contexts to provide significant
behavioral differences (such as using the table's context classloader or not).
The use of the current table context in the shell is limited in value, and
really only allows somebody to omit the "-t tableName" from a command. It is
implemented inconsistently, and I question it's underlying utility in the first
place, especially now that we have namespaces, which might offer a more useful
application for shell contexts. I think it'd be very unexpected if there were
substantial differences in the way a command behaved which depended on the
context. That'd be confusing and unexpected, especially when scripting the
shell, where you don't actually have live interaction with the shell's table
contexts.
> setscaniter and setshelliter unable to load class.
> --------------------------------------------------
>
> Key: ACCUMULO-2911
> URL: https://issues.apache.org/jira/browse/ACCUMULO-2911
> Project: Accumulo
> Issue Type: Bug
> Affects Versions: 1.5.0
> Reporter: David Medinets
> Priority: Trivial
>
> Problem:
> I can use a custom iterator using the setiter command but the same iterator
> does not work using the setscaniter or setshelliter commands.
> References:
> https://blogs.apache.org/accumulo/entry/the_accumulo_classloader
> http://accumulo.apache.org/1.5/examples/classpath.html
> Description:
> I am using my https://github.com/medined/D4M_Schema project to start
> Accumulo. So the environment that I am using can be duplicated exactly if
> needed. I am using
> Accumulo: 1.5.0
> Hadoop: 1.2.1
> The classpath settings in accumulo-site.xml are the following (which I think
> are the default):
> <property>
> <name>general.classpaths</name>
> <value>
> $ACCUMULO_HOME/server/target/classes/,
> $ACCUMULO_HOME/core/target/classes/,
> $ACCUMULO_HOME/start/target/classes/,
> $ACCUMULO_HOME/examples/target/classes/,
> $ACCUMULO_HOME/lib/[^.].$ACCUMULO_VERSION.jar,
> $ACCUMULO_HOME/lib/[^.].*.jar,
> $ZOOKEEPER_HOME/zookeeper[^.].*.jar,
> $HADOOP_HOME/conf,
> $HADOOP_HOME/[^.].*.jar,
> $HADOOP_HOME/lib/[^.].*.jar,
> </value>
> <description>Classpaths that accumulo checks for updates and class
> files.
> When using the Security Manager, please remove the
> ".../target/classes/" values.
> </description>
> </property>
> I can load my iterator using setiter but not with setscaniter or setshelliter.
> Here is my do-nothing iterator:
> public class MyIterator extends WrappingIterator implements OptionDescriber {
> @Override
> public IteratorOptions describeOptions() {
> String name = "dummy";
> String description = "Dummy Description";
> Map<String, String> namedOptions = new HashMap<String, String>();
> List<String> unnamedOptionDescriptions = null;
> return new IteratorOptions(name, description, namedOptions,
> unnamedOptionDescriptions);
> }
> @Override
> public boolean validateOptions(Map<String, String> options) {
> return true;
> }
>
> }
> I copy the jar file out to HDFS:
> hadoop fs -mkdir /user/vagrant/d4m/classpath
> hadoop fs -put /vagrant/schema/target/d4m_schema-0.0.1-SNAPSHOT.jar
> /user/vagrant/classpath
> I set the table-specific classpath context:
> createtable atest
> table atest
> insert row cf cq value
> config -s
> general.vfs.context.classpath.d4m=hdfs://affy-master:9000/user/vagrant/classpath
> config -t atest -s table.classpath.context=d4m
> Now I can configure the iterator and scan over the single row without a
> problem:
> setiter -n MyIterator -p 10 -scan -minc -majc -class
> com.codebits.d4m.iterator.MyIterator
> scan
> deleteiter -n MyIterator -scan -minc -majc
> However, the setscaniter commands fails:
> root@instance atest> setscaniter -n MyIterator -p 10 -class
> com.codebits.d4m.iterator.MyIterator
> 2014-06-15 02:54:14,098 [shell.Shell] WARN : Deprecated, use setshelliter
> Dummy Description
> 2014-06-15 02:54:14,126 [shell.Shell] ERROR:
> org.apache.accumulo.core.util.shell.ShellCommandException: Command could not
> be initialized (Unable to load com.codebits.d4m.iterator.MyIterator)
> As does the setshelliter:
> root@instance atest> setshelliter -pn d4m -n MyIterator -p 10 -class
> com.codebits.d4m.iterator.MyIterator
> Dummy Description
> 2014-06-15 02:55:07,025 [shell.Shell] ERROR:
> org.apache.accumulo.core.util.shell.ShellCommandException: Command could not
> be initialized (Unable to load com.codebits.d4m.iterator.MyIterator)
> I don't see any messages in the log files.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)