java.lang.RuntimeException:java.lang.InstantiationException使用cygwin在eclipse上运行mapreduce代码

时间:2014-08-22 12:20:26

标签: java eclipse windows hadoop cygwin

您好我正在使用Cygwin在eclipse上运行mapreduce代码。我能够在这种环境中成功运行wordcount程序。但是对于我的新代码,我正处于异常之下。 我的程序没有任何减速器工作/类。我也在eclipse中调试代码。所有映射器作业都成功运行并在上下文中编写输出。抛出异常后。创建临时输出文件夹但没有最终输出。 请帮我解决这个问题。

由于

java.lang.RuntimeException: java.lang.InstantiationException
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:115)
    at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:530)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:410)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:215)
Caused by: java.lang.InstantiationException
    at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:113
    ... 3 more

请在下面找到我的主要功能。

public static void main(String[] args) throws Exception {
    if (args.length < 5) {
        System.out.println("Arguments: [model] [dictionnary] [document frequency] [tweet file] [output directory]");
        return;
    }
    String modelPath = args[0];
    String dictionaryPath = args[1];
    String documentFrequencyPath = args[2];
    String tweetsPath = args[3];
    String outputPath = args[4];
    Configuration conf = new Configuration();
    conf.setStrings(Classifier.MODEL_PATH_CONF, modelPath);
    conf.setStrings(Classifier.DICTIONARY_PATH_CONF, dictionaryPath);
    conf.setStrings(Classifier.DOCUMENT_FREQUENCY_PATH_CONF, documentFrequencyPath);
    // do not create a new jvm for each task
    conf.setLong("mapred.job.reuse.jvm.num.tasks", -1);
    Job job = new Job(conf, "classifier");
    job.setJarByClass(MapReduceClassifier.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    job.setMapperClass(ClassifierMap.class);
    job.setInputFormatClass(TextInputFormat.class);
    job.setOutputFormatClass(TextOutputFormat.class);
    FileInputFormat.addInputPath(job, new Path(tweetsPath));
    FileOutputFormat.setOutputPath(job, new Path(outputPath));
    job.waitForCompletion(true);
}

1 个答案:

答案 0 :(得分:1)

这与您的问题类似: InstantiationException in hadoop map reduce program

您可能想要检查您提供给JOB的类都不是抽象的。