我正在使用 Python,并且必须使用 Hadoop Streaming 处理以下场景:a) Map1->Reduce1->Map2->Reduce2 b) 我不想存储中间文件 c) 我不想安装 Cascading、Yelp、Oozie 等软件包. 我把它们作为最后的选择。
我已经在 SO 和其他地方进行了同样的讨论,但在 Python 中找不到答案。你能建议一下吗?
我正在使用 Python,并且必须使用 Hadoop Streaming 处理以下场景:a) Map1->Reduce1->Map2->Reduce2 b) 我不想存储中间文件 c) 我不想安装 Cascading、Yelp、Oozie 等软件包. 我把它们作为最后的选择。
我已经在 SO 和其他地方进行了同样的讨论,但在 Python 中找不到答案。你能建议一下吗?
b) 我不想存储中间文件
c) 我不想安装 Cascading、Yelp、Oozie 等软件包。
有什么理由吗?根据响应,可以提供更好的解决方案。
无法避免中间文件,因为前一个 Hadoop 作业的 o/p 不能作为 i/p 流式传输到下一个作业。创建这样的脚本
如果job1不成功则运行流式作业
1然后退出
运行流式作业2如果作业2
成功则删除作业1的o/p否则退出
运行流式作业3如果作业3成功
则删除作业2的o/p否则退出
为什么不使用 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)