iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >hadoop中mapreduce如何实现串联执行
  • 408
分享到

hadoop中mapreduce如何实现串联执行

2023-06-02 21:06:26 408人浏览 泡泡鱼
摘要

小编给大家分享一下hadoop中mapReduce如何实现串联执行,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!import java.io.IOExc

小编给大家分享一下hadoopmapReduce如何实现串联执行,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

import java.io.IOException;import java.util.Iterator;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.NullWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;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;public class PickMain {private static final Log LOG = LogFactory.getLog(PickMain.class);public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {//下面通过使用ContolledJob和JobControl来实现提交多个作业Configuration conf = new Configuration();Job job1 = Job.getInstance(conf);job1.setjarByClass(PickMain.class);job1.setMapperClass(FindMapper.class);job1.setReducerClass(FindReducer.class);job1.setOutpuTKEyClass(Text.class);job1.setOutputValueClass(Text.class);FileInputFormat.addInputPath(job1, new Path(args[0]));FileOutputFormat.setOutputPath(job1, new Path(args[1]));Configuration conf2 = new Configuration();Job job2 = Job.getInstance(conf2);job2.setJarByClass(PickMain.class);job2.setMapperClass(SecondFindMapper.class);job2.setReducerClass(SecondFindReducer.class);job2.setOutputKeyClass(Text.class);job2.setOutputValueClass(Text.class);FileInputFormat.addInputPath(job2, new Path(args[1]));FileOutputFormat.setOutputPath(job2, new Path(args[2]));//创建ControlledJob对job进行包装ControlledJob cjob1 = new ControlledJob(conf);ControlledJob cjob2 = new ControlledJob(conf2);cjob1.setJob(job1);cjob2.setJob(job2);//设置依赖关系,这个时候只有等到job1执行完成后job2才会执行cjob2.aDDDependingJob(cjob1);//JobControl该类相当于一个job控制器,它是一个线程,需要通过线程启动JobControl jc = new JobControl("my_jobcontrol");jc.addJob(cjob1);jc.addJob(cjob2);Thread th = new Thread(jc);th.start();//等到所有的job都执行完成后在退出while(!jc.allFinished()) {Thread.sleep(5000);}System.exit(0);}}class FindMapper extends Mapper<LongWritable, Text, Text, Text>{Text m1 = new Text();Text m2 = new Text();@Overrideprotected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context)throws IOException, InterruptedException {String line = value.toString();String[] tmp1 = line.split(":");String outval = tmp1[0];String[] outkeys = tmp1[1].split(",");for(int i = 0 ; i<outkeys.length;i++) {m1.set(outkeys[i]);m2.set(outval);context.write(m1,m2);}}}class FindReducer extends Reducer<Text, Text, Text, NullWritable>{StringBuilder sb = new StringBuilder();NullWritable nul = NullWritable.get();Text outval = new Text();String spector = ":";@Overrideprotected void reduce(Text txt, Iterable<Text> txtiter, Reducer<Text, Text, Text, NullWritable>.Context context)throws IOException, InterruptedException {sb.delete(0, sb.length());sb.append(txt.toString());Iterator<Text> it = txtiter.iterator();while(it.hasNext()) {sb.append(spector+it.next().toString());}outval.set(sb.toString());context.write(outval, nul);}}class SecondFindMapper extends Mapper<LongWritable, Text, Text, Text>{Text keyout = new Text();Text valueout = new Text();@Overrideprotected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context)throws IOException, InterruptedException {String[] fs = value.toString().split(":");valueout.set(fs[0]);if(fs.length>0) {for(int i = 1;i<fs.length-1;i++) {for(int j = i+1;j<fs.length;j++) {if((int)fs[i].toCharArray()[0]>(int)fs[j].toCharArray()[0]) {keyout.set(fs[j]+"-"+fs[i]);}else {keyout.set(fs[i]+"-"+fs[j]);}context.write(keyout, valueout);}}}}}class  SecondFindReducer extends Reducer<Text, Text, Text, Text>{StringBuilder sb = new StringBuilder();Text outvalue = new Text();@Overrideprotected void reduce(Text key, Iterable<Text> iter, Reducer<Text, Text, Text, Text>.Context context)throws IOException, InterruptedException {sb.delete(0, sb.length());Iterator<Text> it =  iter.iterator();if(it.hasNext()) {sb.append(it.next().toString());}while(it.hasNext()) {sb.append(","+it.next().toString());}outvalue.set(sb.toString());context.write(key, outvalue);}}

以上是“hadoop中mapreduce如何实现串联执行”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: hadoop中mapreduce如何实现串联执行

本文链接: https://www.lsjlt.com/news/231386.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • hadoop中mapreduce如何实现串联执行
    小编给大家分享一下hadoop中mapreduce如何实现串联执行,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!import java.io.IOExc...
    99+
    2023-06-02
  • Java/Web如何调用Hadoop进行MapReduce
    这篇文章主要为大家展示了“Java/Web如何调用Hadoop进行MapReduce”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java/Web如何调用Hadoop进行MapReduce”这篇...
    99+
    2023-05-30
    java hadoop mapreduce
  • Hive中的MapReduce任务是如何执行的
    在Hive中,MapReduce任务的执行流程如下: Hive查询语句被解析成HiveQL,并被转换成MapReduce作业。 H...
    99+
    2024-03-12
    Hive
  • MapReduce引擎如何实现
    今天就跟大家聊聊有关MapReduce引擎如何实现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。   MapReduce引擎怎么实现  使用例子见下...
    99+
    2024-04-02
  • C#如何实现动态执行字符串脚本
    这篇文章主要介绍了C#如何实现动态执行字符串脚本的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#如何实现动态执行字符串脚本文章都会有所收获,下面我们一起来看看吧。先来代码using System;u...
    99+
    2023-07-05
  • jQuery如何串行执行动画?
    这篇文章将为大家详细讲解有关jQuery如何串行执行动画?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jQuery串行动画 jQuery中的动画函数通常会排队运行,即一个动画完成后,另一个才会开始。这种...
    99+
    2024-04-02
  • 如何用shell脚本执行hadoop命令
    要使用shell脚本执行Hadoop命令,可以按照以下步骤操作:1. 创建一个新的文本文件,并使用任何文本编辑器打开它(如vi、na...
    99+
    2023-10-11
    hadoop
  • 如何在Linux系统中使用Systemd和Crontab实现任务的串行执行
    要在Linux系统中使用Systemd和Crontab实现任务的串行执行,可以按照以下步骤进行操作:1. 创建一个Systemd服务...
    99+
    2023-10-09
    Linux
  • java如何实现对Hadoop进行操作
    这篇文章主要为大家展示了“java如何实现对Hadoop进行操作”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java如何实现对Hadoop进行操作”这篇文章吧。基本操作import ...
    99+
    2023-06-20
  • Linux中如何实现crontab定时执行任务
    小编给大家分享一下Linux中如何实现crontab定时执行任务,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!基本格式 : *  *  *  *  *  comm...
    99+
    2023-06-13
  • 如何实现shell中嵌套执行expect命令
    本篇内容主要讲解“如何实现shell中嵌套执行expect命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现shell中嵌套执行expect命令”吧!1.先安装expect代码如下:yu...
    99+
    2023-06-09
  • hadoop如何实现分组
    在Hadoop中,可以使用MapReduce实现数据的分组。在Map阶段,数据会被分割成不同的key-value对,并且可以通过自定...
    99+
    2024-04-03
    hadoop
  • JavaScript如何实现自执行函数
    这篇文章将为大家详细讲解有关JavaScript如何实现自执行函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。自执行函数 ( function(){…} )() 和( function(){…} () ...
    99+
    2023-06-03
  • 如何使用hadoop archive合并小文件并进行mapreduce来减少map的数量
    这篇文章给大家分享的是有关如何使用hadoop archive合并小文件并进行mapreduce来减少map的数量的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如下:原始文件 四个文件经过hadoop archi...
    99+
    2023-06-02
  • hadoop中分布式计算如何实现
    Hadoop中的分布式计算是通过将数据分片存储在多台计算机上,并同时在这些计算机上执行数据处理操作来实现的。Hadoop框架中有两个...
    99+
    2024-03-13
    hadoop
  • java代码如何实现异步执行
    在Java中,可以使用多线程或者使用Java 8之后引入的CompletableFuture来实现异步执行。 使用多线程: Th...
    99+
    2023-10-25
    java
  • php如何实现代码自动执行
    本文小编为大家详细介绍“php如何实现代码自动执行”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何实现代码自动执行”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、PHP的自动执行功能PHP提供了多种方...
    99+
    2023-07-06
  • PHP如何对字符串执行rot13转换
    这篇文章将为大家详细讲解有关PHP如何对字符串执行rot13转换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP中执行ROT13字符串转换指南 简介 ROT13 是一种简单的字母替换密码,用来对字符串...
    99+
    2024-04-02
  • Laravel如何实现supervisor执行异步进程
    今天小编给大家分享一下Laravel如何实现supervisor执行异步进程的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问...
    99+
    2023-07-04
  • 如何使用JQuery对多个ajax请求串行执行
    本篇内容主要讲解“如何使用JQuery对多个ajax请求串行执行”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用JQuery对多个ajax请求串行执行”吧...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作