2014-10-19 80 views
0

我是Hadoop的新手。我有三個單獨的文件,包含map,reduce和mapreduce代碼。mapper和reducer文件被編譯,但主類拋出在setmapperclass和setreducerclass方法中找不到符號錯誤。這是main :Hadoop的setMapperClass和SetReducerClass不工作?

import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 
import org.apache.hadoop.mapreduce.Mapper; 
public class MaxTemperature { 
public static void main(String[] args) throws Exception { 
if (args.length != 2) { 
System.err.println("Usage: MaxTemperature <input path> <output path>"); 
System.exit(-1); 
} 
Job job = new Job(); 
job.setJarByClass(MaxTemperature.class); 
job.setJobName("Max temperature"); 
FileInputFormat.addInputPath(job, new Path(args[0])); 
FileOutputFormat.setOutputPath(job, new Path(args[1])); 
job.setMapperClass(MaxTemperatureMapper.class); //error cannot find symbol 
job.setReducerClass(MaxTemperatureReducer.class); //error cannot find symbol 
job.setOutputKeyClass(Text.class); 
job.setOutputValueClass(IntWritable.class); 
}} 

的Hadoop版本的使用2.5.1和我把它用

hdfs com.sun.tools.javac.Main /usr/local/hadoop/share/hadoop/mapreduce/MaxTemperature.java 

我用同樣的命令編譯映射器和減速機程序編譯。

+1

檢查MaxTemperatureMapper和MaxTemperatureReducer可用在課程路徑 – Tinku 2014-10-19 06:10:24

+0

無論如何,你需要一個Jar來運行這個工作(如果不忽略這個評論)。看看http://docs.oracle.com/javase/tutorial/deployment/jar/build.html。我再次不知道命令'hdfs com.sun.tools.javac.Main ..'。 – blackSmith 2014-10-20 07:44:42

回答

0

您可以編譯所有的三個文件一起象下面這樣:

的javac -cp Hadoop的共0.21.0.jar:Hadoop的核心1.1.2.jar:公地CLI-1.3.1。 jar:com.google.guava_1.6.0.jar:hadoop-mapred-0.21.0.jar FacebookCount.java FacebookMapper.java FacebookReducer.java -d/usr/local/com/subu/