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

有帮助吗?

解决方案

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

其他提示

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

如何执行此操作的一个示例可以在 dumbo项目中找到,这是一个python编写流媒体作业的框架。它具有写入多个文件的功能,并在内部用其姐妹项目 feathers - fm.last.feathers.output.MultipleTextFiles。

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

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

使用流媒体时是否可以替换outputFormatClass? 在本机Java实现中,您将扩展MultipleTextOutputFormat类并修改命名输出文件的方法。然后使用JobConf的setOutputFormat方法

将您的实现定义为新的outputformat

你应该验证,如果这也可以在流媒体中。我不知道: - /

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top