在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);
}
}
2条答案
按热度按时间rn0zuynd1#
更换管路,
fileinputformat.setinputpaths(conf,新路径(arg0[0]),新路径(arg0[1],新路径(arg0[2]));
具有
fileinputformat.setinputpaths(conf,新路径(arg0[0]),新路径(arg0[1]),新路径(arg0[2]);
请尝试,我希望,这将有帮助,关闭括号args1关闭后arg2,这是造成问题。
42fyovps2#
我认为在if条件下,u应该使用arg0.length<=3而不是arg0.length<2。因为在程序中使用arg0[2]和arg0[3],这两个参数分别是第三个和第四个参数。