3

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

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

4

2 回答 2

3

b) 我不想存储中间文件

c) 我不想安装 Cascading、Yelp、Oozie 等软件包。

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

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

如果job1不成功则运行流式作业
1然后退出
运行流式作业2如果作业2
成功则删除作业1的o/p否则退出
运行流式作业3如果作业3成功
则删除作业2的o/p否则退出

于 2012-01-14T06:50:19.767 回答
2

为什么不使用 MapReduce 框架进行 Python 流式传输,例如 Dumbo https://github.com/klbostee/dumbo/wiki/Short-tutorial或 MRJob http://packages.python.org/mrjob/

例如,使用小飞象,您的管道将是:

job.add_iter(Mapper1, Reducer1)
job.add_iter(Mapper2, Reducer2)
于 2012-10-22T10:09:12.703 回答