accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dave Marion (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ACCUMULO-1399) Pluggable commands for the shell
Date Sun, 19 May 2013 00:23:15 GMT

    [ https://issues.apache.org/jira/browse/ACCUMULO-1399?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13661445#comment-13661445
] 

Dave Marion commented on ACCUMULO-1399:
---------------------------------------

2nd patch includes a script command. See the comment above for the extensions command. The
script command allows you to run scripts using JSR-223 engines. A list of JSR-223 engines
can be found in this thread: http://stackoverflow.com/questions/11838369/where-can-i-find-a-list-of-available-jsr-223-scripting-languages.
Documentation for the scripting feature can be found at http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/.

Here are some examples:

echo "println(arg1)" > /tmp/hello.rhino

./accumulo shell --fake

list JSR-223 engines on the classpath
{code}
script -l
{code}

execute an inline script
{code}
script -e rhino -s "println('Hello')"
{code}

execute an inline script with 1 arg
{code}
script -e rhino -s "println(arg1)" -a arg1=Hello
{code}

execute an inline script with 2 args
{code}
script -e rhino -s "println(arg1+', '+arg2)" -a arg1=Hello -a arg2=World
{code}

execute a script in a file
{code}
script -e rhino -f /tmp/hello.rhino -a arg1=Hello
{code}

invoke a function in a script
{code}
script -e rhino -s "function hello(arg1) { println('Hello, ' + arg1); }" -fx hello -a arg1=Dave
{code}

invoke a method on a function
{code}
script -e js -s "var obj = new Object(); obj.hello = function(arg1) { println('Hello, ' +
arg1); }" -obj obj:hello -a arg1=Dave
{code}

 I was trying to do something more complicated. The script below compiles and runs without
error, but no data is in the table afterwards. Any idea what I am missing?
 
{code}
function testInsert(tableName, numRows) {
  connection.tableOperations().create(tableName);
  if (!connection.tableOperations().exists(tableName)) {
    println("Table does not exist");
    return;
  }
 
  var bwConfig = new org.apache.accumulo.core.client.BatchWriterConfig();
  bwConfig.setMaxMemory(1024);
  var bw = connection.createBatchWriter(tableName, bwConfig);
  for (var x = 0; x < numRows; x++) {
    var mut = new org.apache.accumulo.core.data.Mutation(new org.apache.hadoop.io.Text(x));
    bw.addMutation(mut);
    println("Adding " + x);
  }
  bw.flush();
  bw.close();

  var scanner = connection.createScanner(tableName, new org.apache.accumulo.core.security.Authorizations());
  var scanIterator = scanner.iterator();
  while (scanIterator.hasNext()) {
    var entry = scanIterator.next();
    println(entry.getKey().toString()+"  ->  "+entry.getValue());
  }
}
{code}

run the test function
{code}
script -e rhino -f /tmp/insert.js  -a tableName=foo -a numRows=10 -fx testInsert
{code}

                
> Pluggable commands for the shell
> --------------------------------
>
>                 Key: ACCUMULO-1399
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-1399
>             Project: Accumulo
>          Issue Type: New Feature
>          Components: shell
>            Reporter: Dave Marion
>            Assignee: Dave Marion
>            Priority: Minor
>             Fix For: 1.6.0
>
>         Attachments: ACCUMULO-1399-1.patch, ACCUMULO-1399-2.patch
>
>
> Proposing modification to the Shell to allow applications to create their own set of
commands. This might be accomplished using java.util.ServiceLoader or something like it. Specifically,
I'm thinking of a case where I have a create table command that is different than the one
provided by the Shell. In my case, my create table command may create one or more tables and
setup iterators on them.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message