java - MapReduce链式作业永无止境

标签 java eclipse hadoop mapreduce

我正在尝试用org.apache.hadoop.mapred.jobcontrol.*库链接两个作业,而不是经典的作业,但是当我用Hadoop执行.jar文件时,即使它产生了我期望的正确输出,它也永远不会结束。

我想使用此库,并且知道在第二项工作完成后如何停止执行。就像我使用了job.waitForCompletion(true)一样,并且就像我只执行一项工作来执行一个.jar一样。

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.mapred.jobcontrol.Job;
import org.apache.hadoop.mapred.jobcontrol.JobControl;

public class Interest {
    public static void main(String[] args) throws Exception {

        JobConf conf1 = new JobConf(Interest.class);
        conf1.setJobName("Interest");
        conf1.setMapperClass(InterestMapperA.class);
        conf1.setReducerClass(InterestReducerA.class);
        conf1.setMapOutputKeyClass(Text.class);
        conf1.setMapOutputValueClass(IntWritable.class);
        conf1.setOutputKeyClass(Text.class);
        conf1.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(conf1, new Path(args[0]));
        FileOutputFormat.setOutputPath(conf1, new Path("temp"));

        JobConf conf2 = new JobConf(Interest.class);
        conf2.setJobName("Interest");
        conf2.setMapperClass(InterestMapperB.class);
        conf2.setReducerClass(InterestReducerB.class);
        conf2.setMapOutputKeyClass(IntWritable.class);
        conf2.setMapOutputValueClass(Text.class);
        conf2.setOutputKeyClass(Text.class);
        conf2.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(conf2, new Path("temp"));
        FileOutputFormat.setOutputPath(conf2, new Path(args[1]));

        Job job1 = new Job(conf1);
        Job job2 = new Job(conf2);
        JobControl jbcntrl = new JobControl("jbcntrl");
        jbcntrl.addJob(job1);
        jbcntrl.addJob(job2);
        job2.addDependingJob(job1);
        jbcntrl.run();        
    }
}

最佳答案

我已经用旧库解决了这个问题,实际上最新的库没有用于管理作业依赖性的属性。

关于java - MapReduce链式作业永无止境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917190/

相关文章:

java - Firefox 浏览器未使用 selenium webbrowser 代码打开

java String.valueOf 问题

java - Eclipse Indigo (3.7) 的免费 UML 插件?

java - 无法理解请求JPA的结果

java - 带有 libgdx : asset not found 的可执行 jar

hadoop - 查询以查找最大值

java - Nutch Crawl 错误 - 输入路径不存在

java - MapReduce 能否用于从一个巨大的文件中有效地求和整数?

java - Jackson @JsonIgnoreProperties - 组合规则

Java 查找字符串数组中的某个数字