我们可以在Hadoop Streaming中级联多个MapReduce作业(lang:Python)

时间:2012-01-14 04:46:40

标签: python hadoop mapreduce hadoop-streaming

我使用的是Python,必须使用Hadoop Streaming处理以下场景: a)Map1-> Reduce1-> Map2-> Reduce2 b)我不想存储中间文件 c)我不想安装Cascading,Yelp,Oozie等软件包。我把它们作为最后的选择。

我已经在SO和其他地方进行了同样的讨论,但是找不到Python的答案。你能建议吗。

2 个答案:

答案 0 :(得分:3)

  

b)我不想存储中间文件

     

c)我不想安装像Cascading,Yelp,Oozie这样的软件包。

有什么理由?根据响应,可以提供更好的解决方案。

无法避免中间件文件,因为以前的Hadoop作业的o / p无法作为i / p流式传输到下一个作业。创建一个这样的脚本

  

运行流媒体作业1   如果job1不成功,则退出
  运行流媒体job2
  如果job2成功,则删除o / p job1,否则退出
  运行流媒体工作3   如果job3成功,则删除o / p job2,退出

答案 1 :(得分:2)

为什么不将MapReduce框架用于python流,例如Dumbo https://github.com/klbostee/dumbo/wiki/Short-tutorial或MRJob http://packages.python.org/mrjob/

例如,使用dumbo,您的管道将是:

job.add_iter(Mapper1, Reducer1)
job.add_iter(Mapper2, Reducer2)