在cloudera上执行hadoop pragram时获取arrayindexoutofboundsexception:3

imzjd6km  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(603)

在cloudera linux机器上,我正在获取arrayindexoutofbounds异常:3。
我不明白为什么这个例外是来为这个项目只有其他人是我的罚款。
公共类transactioncount扩展配置的实现工具{

@Override
public int run(String[] arg0) throws Exception {

    if(arg0.length<2)
    {
        System.out.println("Please provide inpt and output directory properly");
        return -1;
    }
    JobConf conf=new JobConf(com.ankur.MRpractice.TransactionCount.class); 

    FileInputFormat.setInputPaths(conf, new Path(arg0[0]),new Path(arg0[1],new Path(arg0[2])));
    FileOutputFormat.setOutputPath(conf,new Path(arg0[3]));

    conf.setMapperClass(TransMapper.class);
    conf.setReducerClass(TransReducer.class);

    conf.setMapOutputKeyClass(Text.class);
    conf.setMapOutputValueClass(IntWritable.class);

    conf.setOutputKeyClass(Text.class);
    conf.setOutputValueClass(IntWritable.class);

    conf.setPartitionerClass(TransPartioner.class);
    conf.setNumReduceTasks(4);

    JobClient.runJob(conf);

    return 0;

}

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

}

rn0zuynd

rn0zuynd1#

更换管路,
fileinputformat.setinputpaths(conf,新路径(arg0[0]),新路径(arg0[1],新路径(arg0[2]));
具有
fileinputformat.setinputpaths(conf,新路径(arg0[0]),新路径(arg0[1]),新路径(arg0[2]);
请尝试,我希望,这将有帮助,关闭括号args1关闭后arg2,这是造成问题。

42fyovps

42fyovps2#

我认为在if条件下,u应该使用arg0.length<=3而不是arg0.length<2。因为在程序中使用arg0[2]和arg0[3],这两个参数分别是第三个和第四个参数。

相关问题