gpt4 book ai didi

java - MapReduce链式作业永无止境

转载 作者:行者123 更新时间:2023-12-02 21:48:43 26 4
gpt4 key购买 nike

我正在尝试用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/

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