python hadoop mapreduce mrjob

python - ¿Cómo determinar específicamente la entrada para cada paso del mapa en MRJob?



hadoop mapreduce (1)

Puedes usar Runners

Tendrá que definir los trabajos por separado y usar otro script de python para invocarlo.

from NumLines import NumLines from WordsPerLine import WordsPerLine import sys intermediate = None def firstJob(input_file): global intermediate mr_job = NumLines(args=[input_file]) with mr_job.make_runner() as runner: runner.run() intermediate = runner.get_output_dir() def secondJob(input_file): mr_job = WordsPerLine(args=[intermediate,input_file]) with mr_job.make_runner() as runner: runner.run() if __name__ == ''__main__'': firstJob(sys.argv[1]) secondJob(sys.argv[1])

y puede ser invocado por:

python main_script.py input.txt

Estoy trabajando en un trabajo de reducción de mapas, que consta de varios pasos. Usando mrjob cada paso recibe salida de paso anterior. El problema es que no quiero que lo haga.

Lo que quiero es extraer algo de información y usarla en el segundo paso contra todas las entradas, y así sucesivamente. ¿Es posible hacer esto usando mrjob?

Nota : Como no quiero usar emr, esta pregunta no me sirve de mucho.

ACTUALIZACIÓN : Si no sería posible hacer esto en un solo trabajo, necesito hacerlo en dos trabajos separados. En este caso, ¿hay alguna manera de envolver estos dos trabajos y gestionar salidas intermedias, etc.?