驱动程序类编译错误 - hadoop Mapreduce

时间:2014-10-26 05:50:06

标签: hadoop command-line mapreduce

我有3个.java文件

1) Mapper.java
2) Reducer.java
3) Driver.java

我正在尝试使用Driver类在命令行编译hadoop mapreduce程序,但它显示如下错误

Driver.java:39: error: cannot find symbol
        job.setMapperClass(Mapper.class);
                           ^
  symbol:   class Mapper
  location: class Driver
Driver.java:40: error: cannot find symbol
        job.setReducerClass(Reducer.class);

如何解决上述错误.Below是Driver类中的run方法

public boolean runnerParsing(String inputPath, String outputPath) throws IOException, ClassNotFoundException, InterruptedException {
         Configuration conf = new Configuration();

        Job job = new Job(conf, "Parsing");
        job.setJarByClass(Driver.class);


        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);

        job.setMapperClass(Mapper.class);
        job.setReducerClass(Reducer.class);
        //job.setNumReduceTasks(0);

        job.setInputFormatClass(TextInputFormat.class);
        job.setOutputFormatClass(TextOutputFormat.class);

        FileInputFormat.addInputPath(job, new Path(inputPath));
        FileOutputFormat.setOutputPath(job, new Path(outputPath));

        return job.waitForCompletion(true);

     }

3 个答案:

答案 0 :(得分:0)

这就是我的想法:

  • 您没有将Mapper / Reducer存储在Mapper.java/Reducer.java中。
  • 您在另一个包中有mapper / reducer类

您是否可以添加mapper和reducer类以进行提问?

答案 1 :(得分:0)

您需要编译所有java文件,如下所示:

javac -classpath /usr/local/hadoop/hadoop-core-1.2.1.jar -d compiled_classes Driver.java Mapper.java Reducer.java

请注意,根据您安装Hadoop的方式,您的类路径值可能会略有变化。

如果您需要进一步的帮助,请查看本文可能对您有所帮助: http://www.bigdatatutes.com/getting-started-with-big-data/

答案 2 :(得分:0)

在Garry Tukington和Gabriele Modena撰写的“使用Hadoop的大数据”的第3章中,有模式Top N的示例,其中TopTenHashTag类的驱动程序代码中有此指令,并引用了另一个Java类: / p>

job.setJarByClass(HashTagCount.class);

在我的PC中,两个文件HashTagCount.java和TopTenHashTag.java都位于:/ home / hduser / playground / src

我的编译命令如下(并且对我有用):

javac -classpath $ HADOOP_HOME / share / hadoop / common / lib / activation-1.1.jar:$ HADOOP_HOME / share / hadoop / common / hadoop-common-2.7.1.jar:$ HADOOP_HOME / share / hadoop / common / lib / :/ usr / hadoop / hadoop-2.7.1 / share / hadoop / mapreduce / -d操场/ classes7操场/src/TopTenHashTag.java \ Playground / src / HashTagCount.java

这是创建.jar文件的命令: jar -cvf游乐场/TopTenHashTag.jar -C游乐场/ classes7/。

最后这是启动mapreduce作业的命令:

hadoop jar /home/hduser/playground/TopTenHashTag.jar com.learninghadoop2.mapreduce.TopTenHashTag / user / hduser / inxYZ / outHashXYZ