首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MapReduce:持续保存就业结果

MapReduce:持续保存就业结果
EN

Stack Overflow用户
提问于 2013-02-06 13:51:47
回答 1查看 1.2K关注 0票数 1

我试图用三个步骤实现mapreduce作业,每一步之后我都需要所有步骤的数据。有没有人知道我如何将映射器或还原器的结果保存到mrjob中的磁盘中?

EN

回答 1

Stack Overflow用户

发布于 2013-02-17 23:42:52

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

当您说要将结果保存到磁盘时,听起来就像是要依赖流回stdout的输出?这种行为只是一种方便(并且可以关闭),MRJob所有的东西都会从磁盘上弹出。

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

代码语言:javascript
复制
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的任何参数如果不是标志,且未被选项预先执行,则被视为输入文件或目录。
  • 使用--没有输出来阻止输出返回到stdout (我在上面的第一步中使用了它,您可能不想要临时结果,但是在第二个步骤中没有使用它来演示两者之间的区别)。在需要三个步骤的情况下,您可以在前两个步骤中忽略它,而在第三个步骤中忽略它。或者,将第三步的输出写入您可以轻松读取的文件夹。

让我知道,如果你遇到任何障碍,它应该是相对直接的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14730735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档