Disco/MapReduce: использование chain_reader для разделения данных

Мой алгоритм в настоящее время использует nr_reduces 1, потому что мне нужно убедиться, что данные для данного ключа агрегированы.

Чтобы передать ввод следующей итерации, нужно использовать "chain_reader". Тем не менее, результаты сопоставления представлены в виде единого списка результатов, и это означает, что следующая итерация карты выполняется в виде единого сопоставителя! Есть ли способ разделить результаты для запуска нескольких картографов?

1 ответ

Я мог бы дать длинный ответ, но так как этому вопросу 3 года: проверьте эту страницу: http://discoproject.org/doc/disco/howto/dataflow.html

Вкратце: если для функции картографирования имеется N входных данных, выходной сигнал будет иметь значение N и путем настройки merge_partitions=False ваше сокращение будет выводить N BLOB. Теперь, если вы хотите генерировать больше выходов, чем входов, вы можете передать partions=N, Но когда ваша работа с диско состоит только из функции маппера, и вы хотите сгенерировать секционированный вывод, тогда добавьте простейшее сокращение fase в сочетании с параметрами, указанными выше, чтобы получить этот секционированный вывод.

@staticmethod
Def Reduce(iter, out, params):
    для (ключ, значение) в iter:
        out.add(ключ, значение)
Другие вопросы по тегам