ข้อผิดพลาดนี้ดูเหมือนเล็กน้อย แต่จะไม่หายไป ฉันได้กำหนดคลาสต่อไปนี้:
import java.io.IOException;
import java.util.Iterator;
import java.util.StringTokenizer;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reducer;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapred.TextInputFormat;
import org.apache.hadoop.mapred.TextOutputFormat;
import org.apache.hadoop.mapreduce.Mapper;
public class Anagram_Mapper extends Mapper<LongWritable, Text, Text, Text> {
ในฟังก์ชั่น 'main' ฉันกำลังพยายามใช้ JobConf เพื่อเปิดใช้ mapreduce อย่างง่าย:
public static void main(String args[]){
JobConf conf = new JobConf(Anagram_Mapper.class);
conf.setJobName("anagram_mapper");
conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class);
conf.setMapperClass(Anagram_Mapper.class);
conf.setCombinerClass(Reduce.class);
conf.setReducerClass(Reduce.class);
conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);
FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
try {
JobClient.runJob(conf);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Eclipse กำลังส่งข้อผิดพลาดในบรรทัดนี้:
conf.setMapperClass(Anagram_Mapper.class);
ข้อผิดพลาดคือ:
The method setMapperClass(Class<? extends Mapper>) in the type JobConf
is not applicable for the arguments (Class<Anagram_Mapper>)
แต่อย่างที่คุณเห็นด้านบน คลาส Anagram_Mapper ของฉันขยาย Mapper ใช่ไหม ดังนั้นฉันจึงไม่เข้าใจว่าทำไมถึงเกิดข้อผิดพลาดนี้....
แก้ไข: มีคนโพสต์ที่นี่ จากนั้นถอนโพสต์ของพวกเขา แต่มันช่วยชี้นำฉันไปในทิศทางที่ถูกต้อง เห็นได้ชัดว่าฉันใช้: org.apache.hadoop.mapreduce.Mapper
แต่ JobConf.setMapperClass ยอมรับเฉพาะ: org.apache.hadoop.mapred.Mapper
ตอนนี้ฉันสับสนเล็กน้อยเกี่ยวกับความแตกต่าง ดูเหมือนว่าโดยพื้นฐานแล้วจะเหมือนกัน และ API บอกฉันว่าทั้งคู่ใช้ได้ใน Hadoop 2.2.0 ซึ่งเป็นเวอร์ชันที่ฉันใช้....