我正在从事一项地图缩减工作,包含多个步骤。使用 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(使用前将#替换为@)