2015-03-02 2 views
0

У меня есть простая работа MapReduce, которую я заимствовал у avro website с некоторыми незначительными изменениями (я удалил редуктор). Он в основном принимает простой файл avro в качестве входных данных. Вот схема из Avro файлаРабота mapreduce не выполняется.

Avro схема:

{ 
"type": "record", 
"name": "User", 
"fields": [ 
{"name": "name", "type": "string"}, 
{"name": "favorite_number", "type": "int"}, 
{"name":"favorite_color", "type": "string"} 
] 
} 

и вот моя MapReduce работа (картограф и основная функция):

public class ColorCountMapper extends Mapper<AvroKey<User>, NullWritable, Text, IntWritable> { 

@Override 
public void map(AvroKey<User> key, NullWritable value, Context context) throws IOException, InterruptedException { 

    CharSequence color = key.datum().getFavoriteColor(); 
    if (color == null) { 
    color = "none"; 
    } 
    context.write(new Text(color.toString()), new IntWritable(1)); 
} 

}

и

public static void main(String[] args) throws Exception { 


    Configuration conf = new Configuration(); 
    Job job = Job.getInstance(conf, "TestColor"); 
    job.setJarByClass(runClass.class); 
    job.setJobName("Color Count"); 

    FileInputFormat.setInputPaths(job, new Path("in")); 
    FileOutputFormat.setOutputPath(job, new Path("out")); 

    job.setInputFormatClass(AvroKeyInputFormat.class); 
    job.setMapperClass(ColorCountMapper.class); 
    AvroJob.setInputKeySchema(job, User.getClassSchema()); 
    job.setMapOutputKeyClass(Text.class); 
    job.setMapOutputValueClass(IntWritable.class); 


    boolean r = job.waitForCompletion(true); 
    System.out.println(r); 
}  

Когда я запускаю программу, он возвращает false и не получается. Я не могу понять проблему. Может кто-нибудь помочь?

ответ

0

Вы установили тип значения в Mapper, как NullWritable. Затем в главном/драйвере вы установили класс значений Map-output как IntWritable. Тип значения в Mapper и главный/драйвер должны быть одинаковыми. Измените свою программу соответствующим образом. Примите мой ответ, если у вас есть решение.

+0

У вас есть решение? – Sachin

Смежные вопросы