我正在为Hadoop 0.20.2编写一个自定义的InputFormat,并且遇到NoSuchMethodException我无法摆脱.我开始时:
public class ConnectionInputFormat extends FileInputFormat<Text,Connection> { @Override public RecordReader<Text,Connection> createRecordReader(InputSplit split,TaskAttemptContext context) throws IOException,InterruptedException { return new ConnectionRecordReader(); } }
运行时出现此错误:
Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchMethodException: testingground.TestInputJob$ConnectionInputFormat.<init>() at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:115) at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:882) at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:779) at org.apache.hadoop.mapreduce.Job.submit(Job.java:432) at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:447) at testingground.TestInputJob.run(TestInputJob.java:141) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79) at testingground.TestInputJob.main(TestInputJob.java:156) Caused by: java.lang.NoSuchMethodException: testingground.TestInputJob$ConnectionInputFormat.<init>() at java.lang.class.getConstructor0(Class.java:2706) at java.lang.class.getDeclaredConstructor(Class.java:1985) at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:109) ... 8 more Java Result: 1
在初始化错误并在线研究之后,我认为可能是因为我没有零参数构造函数,所以我添加了一个:
public class ConnectionInputFormat extends FileInputFormat<Text,Connection> { public ConnectionInputFormat() { System.out.println("NetflowInputFormat Constructor"); } @Override public RecordReader<Text,InterruptedException { return new ConnectionRecordReader(); } }
这也没用,所以我添加了第二个构造函数,它接受了任意数量的对象:
public class ConnectionInputFormat extends FileInputFormat<Text,Connection> { public ConnectionInputFormat() { System.out.println("NetflowInputFormat Constructor"); } public ConnectionInputFormat(Object... o) { System.out.println("NetflowInputFormat Constructor"); } @Override public RecordReader<Text,InterruptedException { return new ConnectionRecordReader(); } }
解决方法
原文地址:https://www.jb51.cc/java/129081.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。