MapReduce Job Control

本文介绍了一个基于Hadoop MapReduce的作业流程示例,该流程包括三个阶段的MapReduce任务:数据标准化、属性数量统计及属性最小值计算。通过使用JobControl实现了作业之间的依赖关系,确保前一阶段完成后下一阶段才开始执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package org.cy.pack1;


import java.net.URI;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.jobcontrol.ControlledJob;
import org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.cy.pack1.MR1_Normalization.Map_Normalization;
import org.cy.pack1.MR1_Normalization.Reduce_Normalization;
import org.cy.pack1.MR2_Attnum.MyMap_Att;
import org.cy.pack1.MR2_Attnum.MyReduce_Att;
import org.cy.pack1.MR3_Attmin.MyMap_atm;
import org.cy.pack1.MR3_Attmin.MyReduce_atm;

public class Main extends PublicInfo{

  
    public static void main(String[] args) throws Exception {
        
        //MR1
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(new URI(input.toString()), conf);
        
        if (fs.exists(outMR1)) {
            fs.delete(outMR1, true);
            logger.info("outMR1文件夹存在,已执行删除操作!");
          }

        //job1 config
        Job job1 = new Job(conf,"MR1_");
        ......
        
        //MR2
        
        if (fs.exists(outMR2)) {
            fs.delete(outMR2, true);
            logger.info("outMR2文件夹存在,已执行删除操作!");
          }   


        //job config
        Job job2 = new Job(conf,"MR2_Att");
        ......
        
        
        //MR3
        
        if (fs.exists(outMR3)) {
            fs.delete(outMR3, true);
            logger.info("outMR3文件夹存在,已执行删除操作!");
          }

        //job3 config
        Job job3 = new Job(conf,"MR3");
        ......
        
        
        ControlledJob jobx = new ControlledJob(conf);
        ControlledJob joby = new ControlledJob(conf);
        ControlledJob jobz = new ControlledJob(conf);
        
        jobx.setJob(job1);
        joby.setJob(job2);
        jobz.setJob(job3);
        
        joby.addDependingJob(jobx);//joby   and  jobz   depending  jobx
        jobz.addDependingJob(jobx);
        JobControl jc = new JobControl("xyzJob");
        
        jc.addJob(jobx);
        jc.addJob(joby);
        jc.addJob(jobz);
        
        Thread th = new Thread(jc);
        th.start();
        
        while(true){
            if(jc.allFinished()){
                jc.stop();
                break;
            }
        }

             
        
       
        
        System.out.println("Ok!");
        
        System.exit(0);
        
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值