在Hadoop Streaming中生成单独的输出文件

Rya*_*rio 8 python streaming hadoop mapreduce

仅使用映射器(Python脚本)而不使用reducer,如何为每行输出输出一个单独的文件作为文件名,而不是输出长文件?

Eri*_*erg 7

可以使用-inputformat和-outputformat命令行参数替换input和outputformat类.

可以在dumbo项目中找到如何执行此操作的一个示例,该项目是用于编写流式作业的python框架.它有写入多个文件的功能,并在内部它与它的姊妹项目,一类替代输出格式羽毛 - fm.last.feathers.output.MultipleTextFiles.

然后reducer需要发出一个元组作为键,元组的第一个组件是指向应该写入带有键/值对的文件的目录的路径.可能仍有多个文件,这取决于reducer和应用程序的数量.

我建议查看dumbo,它有许多功能,可以更容易在python中的Hadoop上编写Map/Reduce程序.


Mih*_*i A 1

您可以使用 python 文件函数写入本地文件系统上的文本文件,或者如果您想使用 HDFS,请使用Thrift API