如何具体确定MRJob中每个映射步骤的输入



我正在进行一项由多个步骤组成的map reduce作业。使用mrjob,每个步骤都会接收上一个步骤的输出。问题是我不想这样。

我想要的是提取一些信息,并在第二步中对所有输入使用它,等等。使用mrjob可以做到这一点吗?

注意:由于我不想使用emr,这个问题对我没有多大帮助。

更新:如果不能在一个作业上完成,我需要在两个单独的作业中完成。在这种情况下,有没有办法包装这两个作业并管理中间输出等?

您可以使用Runners

您必须单独定义作业,并使用另一个python脚本来调用它。

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])

并且可以通过以下方式调用:

python main_script.py input.txt

相关内容

  • 没有找到相关文章

最新更新