Я пытаюсь использовать mapreducer в python с библиотекой dumbo. Ниже приведен мой тестовый код для эксперимента, и я надеюсь, что смогу получить всю запись от картографа до выхода редуктора.Зачем уменьшать входные записи с уменьшением записей вывода?
def mapper(key, value):
fields = value.split("\t");
myword = fields[0] + "\t" + fields[1]
yield myword, value
def reducer(key, values):
for value in values:
mypid = value
words = value.split("\t")
global count
count = count + 1
myword = str(count) + "--" + words[1] ##to count total lines in recuder's output records
yield myword, 1
if __name__ == "__main__":
dumbo.run(mapper, reducer)
Ниже приведен журнал структуры сокращения картов. Я ожидаю, что «Уменьшить входные записи» равны «Уменьшить выходные записи», но это не так. Что случилось с моим кодом тестирования или я неправильно понял что-то в mapreducer? спасибо.
Map-Reduce Framework
Map input records=405057
Map output records=405057
Map output bytes=107178919
Map output materialized bytes=108467155
Input split bytes=2496
Combine input records=0
Combine output records=0
Reduce input groups=63096
Reduce shuffle bytes=108467155
Reduce input records=405057
Reduce output records=63096
Spilled Records=810114
это работа при модификации редуктора, как показано ниже:
def reducer(key, values):
global count
for value in values:
mypid = value
words = value.split("\t")
count = count + 1
myword = str(count) + "--" + words[1] ##to count total lines in recuder's output records
yield myword, 1
спасибо, ruakh, я решаю. – Naturehigh