gpt4 book ai didi

python - MapReduce:Mrjob 持久保存结果

转载 作者:太空宇宙 更新时间:2023-11-03 19:05:50 25 4
gpt4 key购买 nike

我正在尝试通过三个步骤来实现映射缩减作业,并且在每个步骤之后我都需要迄今为止所有步骤的数据。有谁有关于如何在 mrjob 中将映射器或 reducer 的结果保存到磁盘的示例/想法?

最佳答案

您可以将多个输入传递到一个作业中,只需将前一个作业的输出作为输入即可。

当您说要将结果保存到磁盘时,听起来您好像依赖于将输出流回标准输出?这种行为只是一种方便(并且可以关闭),使用 MRJob 一切都会从磁盘上反弹。

对于两阶段工作,您可以这样做:

job1 = firstMR(['-r', mode, inputDir, '-o', outputDir, '--no-output']) 
job1.set_up_logging()
with job1.make_runner() as runner1:
runner1.run()
firstOutput = runner1.get_output_dir()

job2 = secondMR(['-r', mode, firstOutput, anyOtherInput, '-o', finalOutputDir, '--no-output'])
job2.set_up_logging()
with job2.make_runner() as runner2:
runner2.run()

注意事项:

  • 在hadoop上运行,所有目录可能应该是hdfs://some/path/
  • MapReduce 的任何非标志且前面没有选项的参数都被视为输入文件或目录
  • 使用 --no-output 停止输出返回到标准输出(我在上面的第一步中使用了它,你可能不想要临时结果,但在第二步中将其保留以演示差异) 。如果您需要三个步骤,您可以在前两个步骤中省略它,并在第三个步骤中省略它。或者将第三步的输出写入您可以轻松读回的文件夹。

如果您遇到任何障碍,请告诉我,它应该相对简单。

关于python - MapReduce:Mrjob 持久保存结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com