mapper/reducer 实例如何在永久保持活动状态的 jvm 中重用?
例如,假设我想做这样的事情:
public class MyMapper extends MapReduceBase implements Mapper<K1, V1, K2, V2> {
private Set<String> set = new HashSet<String>();
public void map(K1 k1, V1 v1, OutputCollector<K2, V2> output, Reporter reporter) {
... do stuff ...
set.add(k1.toString()); //add something to a list so that it can be used later
... do other stuff ...
if(set.contains("someString"))
emitSomeKindOfOutput(output);
else
emitSomeOtherKindOfOutput(output);
}
}
如果同一个映射器可用于多个任务/作业,则成员集可能会导致问题,因为它仍会包含来自先前任务/作业的其他垃圾。这种重用在hadoop中是可能的吗?减速机呢?