MapReduce使用扩展对象作为reducer的Key

时间:2014-04-01 12:53:21

标签: java hadoop mapreduce

我正在尝试使用这样的自定义对象实现map和reduce:

映射器:

public class SommeMapper extends Mapper<LongWritable, Text, Entity, Entity>

减速机:

public class SomeReducer extends Reducer<Entity,Entity, NullWritable, Text>

虽然我有三个可以进入reducer的对象:

Entity implements WitableComparable

A extends Entity

B extends Entity

我用A或B打电话给Context.write

我收到以下错误:

java.io.IOException: Type mismatch in key from map: expected Entity, recieved A

如果我可以在Keys中使用inmhertance进行缩减,有人会指出吗?

2 个答案:

答案 0 :(得分:0)

您必须在创建作业期间为映射器定义输出键/值类:

conf.setOutputKeyClass(Entity.class);
conf.setOutputValueClass(Entity.class);

答案 1 :(得分:0)

您是否考虑为A和B创建包装类? C级{A val1; B val2; }或C类{实体val;}