多个mapreduce连接实例
来源:互联网 发布:米8运输直升机数据 编辑:程序博客网 时间:2024/05/19 09:40
将reduce端连接的Map/Reduce结果作为wordCount 的map输入源:
package com.mr.multiMapReduce;import java.io.IOException;import org.apache.hadoop.examples.WordCount;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapred.JobConf;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 com.mr.reduceSideJoin.CombineValues;import com.mr.reduceSideJoin.ReduceSideJoin_LeftOuterJoin;/* * 这个实例不能在eclipse中运行,无法启动job2,但是放在hadoop环境上是好的。 * */public class MultiMapReduce {// 启动函数public static void main(String[] args) throws IOException {JobConf conf = new JobConf(MultiMapReduce.class);// 第一个job的配置Job job1 = new Job(conf, "join1");job1.setJarByClass(MultiMapReduce.class);job1.setMapperClass(ReduceSideJoin_LeftOuterJoin.LeftOutJoinMapper.class);job1.setReducerClass(ReduceSideJoin_LeftOuterJoin.LeftOutJoinReducer.class);job1.setMapOutputKeyClass(Text.class);// map阶段的输出的keyjob1.setMapOutputValueClass(CombineValues.class);// map阶段的输出的valuejob1.setOutputKeyClass(Text.class);// reduce阶段的输出的keyjob1.setOutputValueClass(Text.class);// reduce阶段的输出的value// job1的输入输出文件路径FileInputFormat.addInputPath(job1, new Path(args[0]));FileOutputFormat.setOutputPath(job1, new Path(args[1]));// 第二个作业的配置Job job2 = new Job(conf, "Join2");job2.setJarByClass(MultiMapReduce.class);job2.setMapperClass(WordCount.TokenizerMapper.class);job2.setReducerClass(WordCount.IntSumReducer.class);job2.setMapOutputKeyClass(Text.class);// map阶段的输出的keyjob2.setMapOutputValueClass(IntWritable.class);// map阶段的输出的valuejob2.setOutputKeyClass(Text.class);// reduce阶段的输出的keyjob2.setOutputValueClass(IntWritable.class);// reduce阶段的输出的valueFileInputFormat.addInputPath(job2, new Path(args[1]));FileOutputFormat.setOutputPath(job2, new Path(args[2]));ControlledJob jobx = new ControlledJob(conf);jobx.setJob(job1);ControlledJob joby = new ControlledJob(conf);joby.setJob(job2);joby.addDependingJob(jobx);// 主的控制容器,控制上面的总的两个子作业JobControl jobCtrl = new JobControl("myctrl");jobCtrl.addJob(jobx);jobCtrl.addJob(joby);// 在线程启动,记住一定要有这个Thread t = new Thread(jobCtrl);t.start();while (true) {if (jobCtrl.allFinished()) {// 如果作业成功完成,就打印成功作业的信息System.out.println(jobCtrl.getSuccessfulJobList());// 等任务运行完删除第一个job的reduce结果。FileSystem fs = FileSystem.get(conf);Path path = new Path(new Path(args[1]).toUri());boolean bool = fs.deleteOnExit(path);if (bool) {System.out.println("文件删除成功");}fs.close();jobCtrl.stop();break;}}}}
0 0
- 多个mapreduce连接实例
- 多个mapreduce连接实例
- MapReduce实例--内连接
- 多个mapreduce工作相互依赖处理方法完整实例
- 高阶MapReduce_2_链接多个MapReduce作业实例
- mapreduce实例-Join连接 (reduce Side Join)
- MapReduce编程实例:连接(Join)
- JDBC连接多个SQLServer实例
- JDBC连接SQLServer多个实例
- 7个实例全面掌握Hadoop MapReduce
- 7个实例全面掌握Hadoop MapReduce
- 7个实例全面掌握Hadoop MapReduce
- mapreduce多路输出实例
- MapReduce实例----多表关联
- 多个mapreduce工作相互依赖
- MapReduce实例
- mapreduce实例
- oracle:一台主机多个实例,sqlplus连接问题
- java,那些年跳进去的坑
- linux命令大全
- srm 303 div2 1000 (简单暴力,分解素因子)
- c/c++单链表的创建和删除,插入,反转操作
- 电容屏幕触摸屏驱动——ft5406 芯片
- 多个mapreduce连接实例
- 终于找到一个类似wince 远程桌面控制android设备的软件——Androidscreencast
- 如何用html5实现在网页上显示本地摄像头
- python默认json库处理mysql中datetime,date类型不能序列化json的解决方案
- UCOS学习问题(第一步)
- make mrproper及mrproper的含义
- POJ3020 Antenna Placement(二分图匹配 匈牙利算法)
- JVM 线程堆栈分析过程详解
- 关于使用java自带ZipOutputStream压缩文件名为中文的乱码问题