是否可以在Hadoop Mapreduce中打印单个作业的Mapper和reducer输出



对于给定的MR作业,我需要生成两个输出文件。一个文件应该是Mapper的输出另一个文件应该是Reducer的输出(它只是上面Mapper的聚合)

我可以让映射器和reducer输出都写在一个作业中吗?

编辑:

在作业1(仅映射器阶段)中,输出在一行中包含20个字段,必须将其写入hdfs(file1)。在作业2(Mapper n reducer)中,Mapper从作业1的输出中获取输入,删除几个字段以转换为标准格式(只有10个字段),并将其传递给reducer,由reducer写入文件2。

我需要hdfs中的file1和file2。。。现在我的疑问是,在Job1 mapper中,我是否可以将数据作为file1写入hdfs,然后修改相同的数据并将其传递给reducer。

PS:到目前为止,我正在使用两个具有链接机制的作业。第一个作业只包含映射器,第二个作业包含映射器和还原器。

您可以使用MultipleOutputs类为映射器定义一个输出,并(可选)为reducer定义一个。对于映射器,您必须写两次:一次用于输出文件(使用MultipleOutputs),一次用于向reducer发射对(像往常一样)。

然后,您还可以利用ChainMap类,在单个作业中定义以下工作流:

映射器1(文件1)->映射器2->还原器(文件2)

老实说,我从来没有用过这种逻辑,但你可以试一试。祝你好运

相关内容

  • 没有找到相关文章

最新更新