我想提供一个可以包含任何文件的目录,而不是给一个文件作为输入。我希望输出以某种方式写入
输入:
文件1文件2文件3
输出:
文件1文件2文件3
虽然每个文件的字数应该在相应的文件中。要识别地图中使用的文件,我可以使用context.getInputSplit()。但是我怎样才能以我想要的方式编写输出。
答案 0 :(得分:0)
您可以使用映射器中的输入拆分来识别它们来自的文件,并将其与MultipleOutputs结合使用来写出与reducer中的单独文件。
但是,您需要将它来自的文件传递给reducer,因此您可能需要创建一个复合键对象并编写一个自定义Partitioner
和WritableComparator
来传输它们。文件名和原始密钥在一起。请参阅:Hadoop - composite key