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

Abh*_*nay 5 hadoop mapreduce

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

我可以将mapper和reducer输出都写在一个作业中吗?

编辑:

在作业1(仅映射器阶段)中,输出在一行中包含20个字段,必须将其写入hdfs(file1).在Job 2(Mapper n reducer)中,Mapper从Job1输出中获取输入,删除几个字段以引入标准格式(仅10个字段)并将其传递给reducer,后者写入file2.

我需要在hdfs中同时使用file1和file2 ...现在我的疑问是,无论是在Job1映射器中我是否可以将数据写入hdfs作为file1,然后修改相同的数据并将其传递给reducer.

PS:截至目前,我正在使用2个具有链接机制的作业.第一个作业只包含mapper,秒作业包含mapper和reducer.

vef*_*hym 2

您也许可以使用MultipleOutputs类为映射器定义一个输出,并(可选)为化简器定义一个输出。对于映射器,您必须编写两次:一次用于输出文件(使用 MultipleOutputs),一次用于将对发送到减速器(像往常一样)。

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

映射器 1(文件 1)-> 映射器 2 -> 减速器(文件 2)

说实话,我从来没有用过这个逻辑,但是你可以尝试一下。祝你好运!