class Result: def __init__(self): self.data = [] def add(self, key, value): self.data.append((key,value)) def result_iterator(result): return result.data class MapReduceJob: def __init__(self, inputfilename, funmap, funreduce): self.inputfilename = inputfilename self.fun_map = funmap self.fun_reduce = funreduce def execute(self): intermediate_res = [] f = open(self.inputfilename) for e in f: intermediate_res += self.fun_map(e,None) res = Result() self.fun_reduce(intermediate_res, res, None) return res