当前位置:  开发笔记 > 大数据 > 正文

Map Reduce:ChainMapper和ChainReducer

如何解决《MapReduce:ChainMapper和ChainReducer》经验,为你挑选了1个好方法。

我需要将Map Reduce jar文件拆分为两个作业,以获得两个不同的输出文件,一个来自两个作业的每个reducers.

我的意思是第一个作业必须生成一个输出文件,该文件将成为链中第二个作业的输入.

我在hadoop版本0.20中阅读了有关ChainMapper和ChainReducer的内容(目前我使用的是0.18):那些可能对我的需求有益吗?

任何人都可以建议我在哪里找到一些例子来使用这些方法吗?或者也许有另一种方法来实现我的问题?

谢谢,

卢卡



1> 小智..:

有很多方法可以做到.

    层叠工作

    为第一个作业创建JobConf对象"job1",并将所有参数设置为inputdirectory,将"temp"设置为输出目录.执行这项工作:JobClient.run(job1).

    紧接其下方,为第二个作业创建JobConf对象"job2",并将所有参数设置为"temp"作为inputdirectory并将"output"设置为输出目录.执行这项工作:JobClient.run(job2).

    两个JobConf对象

    创建两个JobConf对象并将其中的所有参数设置为(1),除非您不使用JobClient.run.

    然后使用jobconfs作为参数创建两个Job对象:

    Job job1=new Job(jobconf1); Job job2=new Job(jobconf2);

    使用jobControl对象,指定作业依赖关系,然后运行作业:

    JobControl jbcntrl=new JobControl("jbcntrl");
    jbcntrl.addJob(job1);
    jbcntrl.addJob(job2);
    job2.addDependingJob(job1);
    jbcntrl.run();
    

    ChainMapper和ChainReducer

    如果你需要一个像Map + |那样的结构 减少| Map*,您可以使用随Hadoop版本0.19及更高版本附带的ChainMapper和ChainReducer类.请注意,在这种情况下,您只能使用一个reducer,但在它之前或之后只能使用任意数量的映射器.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有