gpt4 book ai didi

hadoop - map 缩小 : ChainMapper and ChainReducer

转载 作者:可可西里 更新时间:2023-11-01 14:24:48 24 4
gpt4 key购买 nike

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

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

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

任何人都可以建议我一些链接在哪里可以找到一些示例以便使用这些方法吗?或者也许有另一种方法可以解决我的问题?

谢谢,

卢卡

最佳答案

有很多方法可以做到这一点。

  1. 级联作业

    为第一个作业创建 JobConf 对象“job1”,并将所有参数设置为“input”作为输入目录,“temp”作为输出目录。执行此作业:JobClient.run(job1)

    紧接着,为第二个作业创建 JobConf 对象“job2”,并设置所有参数,其中“temp”作为输入目录,“output”作为输出目录。执行此作业:JobClient.run(job2)

  2. 两个 JobConf 对象

    创建两个 JobConf 对象并在其中设置所有参数,就像 (1) 一样,只是您不使用 JobClient.run。

    然后以jobconfs为参数创建两个Job对象:

    作业 job1=新作业(jobconf1);作业 job2=new Job(jobconf2);

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

    JobControl jbcntrl=new JobControl("jbcntrl");
    jbcntrl.addJob(job1);
    jbcntrl.addJob(job2);
    job2.addDependingJob(job1);
    jbcntrl.run();
  3. ChainMapper 和 ChainReducer

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

关于hadoop - map 缩小 : ChainMapper and ChainReducer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3059736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com