Есть ли способ сортировки вывода функции редуктора с помощью mrjob?
Я думаю, что функция ввода в редуктор сортируется по ключу, и я пытался использовать эту функцию для сортировки вывода, используя другой редукторкак показано ниже, где я знаю, что значения имеют числовые значения, я хочу подсчитать количество каждого ключа и отсортировать ключи в соответствии с этим счетом:
def mapper_1(self, key, line):
key = #extract key from the line
yield (key, 1)
def reducer_1(self, key, values):
yield key, sum(values)
def mapper_2(self, key, count):
yield ('%020d' % int(count), key)
def reducer_2(self, count, keys):
for key in keys:
yield key, int(count)
, но его вывод отсортирован неправильно!Я подозревал, что это странное поведение связано с манипулированием int
s как string
и пытался отформатировать его как эта ссылка говорит, но это не сработало!
ВАЖНОПРИМЕЧАНИЕ: Когда я использую отладчик, чтобы увидеть порядок вывода reducer_2
, порядок правильный, но то, что выводится как вывод, является чем-то другим !!!
ВАЖНОЕ ПРИМЕЧАНИЕ 2: На другом компьютере та же программа с теми же данными возвращает выходные данные, отсортированные как и ожидалось!