是否可以在hadoopmapreduce中为单个作业打印mapper和reducer输出

thigvfpy  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(311)

对于给定的mr作业,我需要生成两个输出文件。一个文件应该是mapper的输出,另一个文件应该是reducer的输出(它只是上述mapper的聚合)
我可以在一个作业中同时编写mapper和reducer输出吗?
编辑:
在作业1(仅Map器阶段)中,输出在一行中包含20个字段,这些字段必须写入hdfs(file1)。在job2(mapper n reducer)中,mapper从job1输出中获取输入,删除几个字段以转换为标准格式(只有10个字段),并将其传递给写file2的reducer。
我需要hdfs中的file1和file2。。。现在我的疑问是,在job1 mapper中是否可以将数据作为file1写入hdfs,然后修改相同的数据并将其传递给reducer。
ps:到目前为止,我正在使用两个链接机制的工作。第一个作业只包含Map器,第二个作业包含Map器和缩减器。

evrscar2

evrscar21#

您也许可以使用multipleoutputs类为Map器定义一个输出(可选)为reducer定义一个输出。对于mapper,您必须编写两次:一次用于输出文件(使用multipleoutputs),另一次用于向reducer发送对(与往常一样)。
然后,还可以利用chainmapper类在单个作业中定义以下工作流:
Map器1(文件1)->Map器2->还原器(文件2)
老实说,我从来没有用过这个逻辑,但你可以试试。祝你好运!

相关问题