Можем ли мы каскадировать несколько заданий MapReduce в Hadoop Streaming (язык: Python) - PullRequest
2 голосов
/ 14 января 2012

Я использую Python и должен работать по следующему сценарию, используя Hadoop Streaming: а) Map1-> Reduce1-> Map2-> Reduce2 б) я не хочу хранить промежуточные файлы в) Я не хочу устанавливать такие пакеты, как Cascading, Yelp, Oozie. Я сохранил их как последний вариант.

Я уже проходил такую ​​же дискуссию о SO и в других местах, но не смог найти ответ по Python. Можете ли вы предложить.

Ответы [ 2 ]

3 голосов
/ 14 января 2012

б) Я не хочу хранить промежуточные файлы

c) Я не хочу устанавливать такие пакеты, как Cascading, Yelp, Oozie.

Есть причина почему? На основе ответа может быть предоставлено лучшее решение.

Промежуточных файлов нельзя избежать, поскольку o / p предыдущего задания Hadoop не может быть передано как i / p к следующему заданию. Создайте скрипт, подобный этому

запустить потоковое задание1
если job1 не успешен, выйдите из
запустить потоковое задание2
если job2 успешен, удалите o / p из job1, иначе выйдите из
запустить потоковое задание3
если job3 успешен, удалите o / p из job2, иначе выйдите из

2 голосов
/ 22 октября 2012

Почему бы не использовать инфраструктуры MapReduce для потоковой передачи Python, такие как Dumbo https://github.com/klbostee/dumbo/wiki/Short-tutorial, или MRJob http://packages.python.org/mrjob/

Например, с dumbo ваш канал будет:

job.add_iter(Mapper1, Reducer1)
job.add_iter(Mapper2, Reducer2)
...