Map Reduce Programの実行中にNullPointer例外が発生します。 なぜこのエラーが発生しているのか理解してください。MapReduceプログラムの実行中にNullPointer例外を取得する
public class AvgDriver extends Configured implements Tool{
@Override
public int run(String[] arg0) throws Exception {
Job job=Job.getInstance();
job.setJar("AvgSalary.jar");
job.setMapperClass(AvgMapper.class);
job.setMapOutputKeyClass(NullWritable.class);
job.setMapOutputValueClass(DoubleWritable.class);
//job.setInputFormatClass(TextInputFormat.class);
job.setReducerClass(AvgReducer.class);
job.setOutputKeyClass(NullWritable.class);
job.setOutputValueClass(DoubleWritable.class);
FileInputFormat.setInputPaths(job, new Path(arg0[0]));
FileOutputFormat.setOutputPath(job, new Path(arg0[1]));
return job.waitForCompletion(true)?0:1;
}
public void main(String [] args) throws Exception
{
System.exit(ToolRunner.run(new AvgDriver(), args));
}
}
public class AvgMapper extends Mapper<LongWritable, Text, NullWritable, DoubleWritable> {
public void map(LongWritable key , Text value , Context context) throws IOException, InterruptedException
{
String values=value.toString();
String [] val=values.split("\t");
double convertVal=Double.parseDouble(val[2]);
context.write(NullWritable.get(), new DoubleWritable(convertVal));
}
}
public class AvgReducer extends Reducer<NullWritable, DoubleWritable, NullWritable, DoubleWritable> {
double total=0.0;
int count=0;
public void Reduce(NullWritable key , Iterator<DoubleWritable> value , Context context) throws IOException, InterruptedException
{
while (value.hasNext()) {
total = total+ ((DoubleWritable) value.next()).get();
count++;
}
total=total/count;
context.write(key, new DoubleWritable(total));
}
}
スタックトレースは、コードの一部を指している必要があります。それはどれですか?太陽のスレッドで – Amit
[Clouderaのの@クイックスタートPracticeNew] $のHadoopのジャーAvgSalary.jar com.ankur.practics.AvgDriver /user/hdfs/empSal.txt /ユーザー/ HDFS/output15 例外 "メイン" java.lang.NullPointerExceptionが \t .reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)sun.reflect.DelegatingMethodAccessorImpl.invokeで \t(DelegatingMethodAccessorImpl.java:43)で \tれるjava.langで \t .reflect.Method.invoke(Method.java:606) \t at org.apache.hadoop.util.RunJar.run(RunJar.java:221) \t at org.apache.hadoop.util.RunJar.main(RunJar .java:1 36) –
上記のスタックトレースには、この例外がどこに来るのかについてのクラスの記述はありません。 –