仅使用映射器(Python脚本)而不使用reducer,如何输出一个单独的文件,其中每个输出行都使用键作为文件名,而不是输出长文件?
答案 0 :(得分:7)
可以使用-inputformat和-outputformat命令行参数替换input和outputformat类。
如何执行此操作的一个示例可以在dumbo project中找到,它是用于编写流式作业的python框架。它具有写入多个文件的功能,并在内部用其姐妹项目feathers - fm.last.feathers.output.MultipleTextFiles中的类替换输出格式。
然后,reducer需要发出一个元组作为键,元组的第一个组件是应该写入具有键/值对的文件的目录的路径。可能仍有多个文件,这取决于reducer和应用程序的数量。我建议调查dumbo,它有许多功能,可以更容易在python中的Hadoop上编写Map / Reduce程序。
答案 1 :(得分:1)
使用流媒体时是否可以替换outputFormatClass? 在本机Java实现中,您将扩展MultipleTextOutputFormat类并修改命名输出文件的方法。然后使用JobConf的setOutputFormat方法
将您的实现定义为新的outputformat你应该验证,如果这也可以在流媒体中。我不知道: - /
答案 2 :(得分:1)
您可以使用python文件函数写入本地文件系统上的文本文件,或者如果您想使用HDFS,请使用Thrift API。