mapreduce報錯java.lang.InstantiationException
阿新 • • 發佈:2020-07-20
一、報錯資訊:
Exception in thread "main" java.lang.RuntimeException: java.lang.InstantiationException at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131) at org.apache.hadoop.mapreduce.JobSubmitter.checkSpecs(JobSubmitter.java:267) at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:143) at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1307) at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1304) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1917) at org.apache.hadoop.mapreduce.Job.submit(Job.java:1304) at hadoop.utils.HadoopUtils.waitForCompletion(HadoopUtils.java:90) at MapreduceCodeWorkJob.run(MapreduceCodeWorkJob.java:56) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) at MapreduceCodeWorkJob.main(MapreduceCodeWorkJob.java:35) Caused by: java.lang.InstantiationException at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:129)
二、原因
例項化異常,原因一般是通過反射例項化物件時失敗,大多原因是在於沒有空參構造器,但本次錯誤為用錯了類:
在配置reduce輸出時:設定job.setOutputFormatClass(FileOutputFormat.class);
將其改為:
job.setOutputFormatClass(TextOutputFormat.class);
就沒有報錯了。