将多个特定文件作为另一个java程序中的一个字符串arg传递

时间:2015-04-24 04:07:04

标签: java hadoop

我试图在一个程序中将少量特定路径作为字符串arg传递给另一个java程序。我收到ArrayIndexOutOfBoundsException错误但是当我在命令行中传递完全相同的arg时它完全正常

命令行中可以使用的是什么:

program1  /filepath/{A,B,C}/*.zip

我想要做的就是给我一个错误:

program2 [call program 1]:

status = ToolRunner.run(conf, program1, new String[]{"/filepath/{A,B,C}/*.zip"});

我不知道如何以这种方式传递它,即使我想传递所有路径并更改第二个程序我不知道如何聚合所有路径并将其指定为输入流。

感谢您的帮助, 谢谢:))

1 个答案:

答案 0 :(得分:0)

ToolRunner.run()方法接收参数:

  • Configuration对象
  • Tool对象
  • 要传递给String对象
  • Tool个参数数组

你的" program1"扩展Tool接口的对象?出现在你所使用的名字上,它似乎更像是对某些人的反对"二进制"或可执行的东西......

请查看documentation

ToolRunner通常在Hadoop应用程序中用作:

public final class MyMRClass extends Configured implements Tool {

    ...

    public static void main(String[] args) throws Exception {
        int res = ToolRunner.run(new Configuration(), new MyMRClass(), args);
        System.exit(res);
    } // main

    @Override
    public int run(String[] args) throws Exception {
        Configuration conf = this.getConf();
        Job job = Job.getInstance(conf, "some job name");
        ...
    }

}
相关问题