1. 程式人生 > 實用技巧 >mapreduce報錯java.lang.InstantiationException

mapreduce報錯java.lang.InstantiationException

一、報錯資訊:

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);

就沒有報錯了。

參考:

https://www.cnblogs.com/yangxusun9/p/12358399.html