How to improve performace of this Map Reduce function, Python mrjob
Since the reduce function in this case is commutative and associative you can use a combiner to pre-aggregate values.

def combiner_count_words(self, word, counts):
    # sum the words we've seen so far
    yield (word, sum(counts))

def steps(self):
    return [self.mr(mapper_init=self.init_mapper,
                    mapper=self.mapper,
                    mapper_final=self.final_mapper,
                    combiner= self.combiner_count_words,
                    reducer=self.reducer,
                    reducer_final=self.final_reducer)]