如何具体确定MRJob中每个map步骤的输入?

2024-04-01

我正在从事一项地图缩减工作,包含多个步骤。使用 mrjob,每个步骤都会接收上一步的输出。问题是我不想这样。

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

Note: 因为我不想使用emr,这个问题 https://stackoverflow.com/questions/9302580/multiple-inputs-with-mrjob对我来说没有太大帮助。

UPDATE:如果不可能在一项工作中完成此操作,我需要在两项单独的工作中完成。在这种情况下,有什么方法可以包装这两个作业并管理中间输出等?


您可以使用Runners http://mrjob.readthedocs.org/en/latest/guides/runners.html

您必须单独定义作业并使用另一个 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何具体确定MRJob中每个map步骤的输入? 的相关文章

随机推荐