当前位置: 首页 > news >正文

wordpress调用相关文章/重庆公司seo

wordpress调用相关文章,重庆公司seo,苏州市相城区疫情最新消息,做网站私活在哪接MapReduce之多输入一、需求说明二、测试数据三、编程思路四、实现步骤五、打包上传到集群中运行一、需求说明 说明:多输入指的是数据源有多种格式的数据,比如在一个目录下有文本类型的和SequenceFile二进制格式的。 针对这种场景,需要使用Map…

MapReduce之多输入

    • 一、需求说明
    • 二、测试数据
    • 三、编程思路
    • 四、实现步骤
    • 五、打包上传到集群中运行

一、需求说明


  • 说明:多输入指的是数据源有多种格式的数据,比如在一个目录下有文本类型的和SequenceFile二进制格式的。 针对这种场景,需要使用MapReduce来分析数据。
  • 要求:改写wordcount程序的输入数据源,实现单词统计。

二、测试数据


  1. 序列化文件:下载地址
  2. 文本文件可以使用之前的wordcount案例所使用的测试数据

三、编程思路


  • 思路:
    1、有多少种数据格式,就需要编写与之对应的mapper即可
    2、需要使用MultipleInputs类来实现

四、实现步骤


  1. 在Idea或eclipse中创建maven项目

  2. 在pom.xml中添加hadoop依赖

    <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.3</version>
    </dependency>
    <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.7.3</version>
    </dependency>
    <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-common</artifactId><version>2.7.3</version>
    </dependency>
    <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>2.7.3</version>
    </dependency>
    
  3. 添加log4j.properties文件在资源目录下即resources,文件内容如下:

    ### 配置根 ###
    log4j.rootLogger = debug,console,fileAppender
    ## 配置输出到控制台 ###
    log4j.appender.console = org.apache.log4j.ConsoleAppender
    log4j.appender.console.Target = System.out
    log4j.appender.console.layout = org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern = %d{ABSOLUTE} %5p %c:%L - %m%n
    ### 配置输出到文件 ###
    log4j.appender.fileAppender = org.apache.log4j.FileAppender
    log4j.appender.fileAppender.File = logs/logs.log
    log4j.appender.fileAppender.Append = false
    log4j.appender.fileAppender.Threshold = DEBUG,INFO,WARN,ERROR
    log4j.appender.fileAppender.layout = org.apache.log4j.PatternLayout
    log4j.appender.fileAppender.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
    
  4. 编写文本类型的mapper即TextInputMapper

    import org.apache.hadoop.io.IntWritable;
    import org.apache.hadoop.io.LongWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;public class TextInputMapper extends Mapper<LongWritable, Text,Text, IntWritable> {@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {String data = value.toString();//分词:I love GuizhouString[] words = data.split(" ");for (String word: words) {context.write(new Text(word),new IntWritable(1));}}
    }
    
  5. 编写SequenceFile二进制格式类型的mapper,即SequenceFileInputMapper

    import org.apache.hadoop.io.IntWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;public class SequenceFileInputMapper extends Mapper<IntWritable, Text,Text,IntWritable> {protected void map(IntWritable key, Text value, Context context) throws IOException, InterruptedException {//数据格式:100 One, two, buckle my shoeString data = value.toString();String[] words = data.split(",");for (int i = 0; i < words.length; ++i) {if (i < 2){context.write(new Text(words[i]),new IntWritable(1));}else{String[] subWords = words[i].split(" ");for (int j = 0; j < subWords.length; j++) {context.write(new Text(subWords[j]),new IntWritable(1));}}}}
    }
    
  6. 编写reducer类

    import org.apache.hadoop.io.IntWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;public class WordCountReducer extends Reducer<Text, IntWritable,Text,IntWritable> {protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable v : values) {sum += v.get();}context.write(key,new IntWritable(sum));}
    }
    
  7. 编写Driver类

    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.Path;
    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.MultipleInputs;
    import org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat;
    import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.util.Random;public class WordCountJob {public static void main(String[] args) throws Exception {Configuration configuration = new Configuration();Job job = Job.getInstance(configuration);job.setJarByClass(WordCountJob.class);//多输入设置MultipleInputs.addInputPath(job,new Path("F:\\NIIT\\hadoopOnWindow\\input\\data\\txt"), TextInputFormat.class, TextInputMapper.class);MultipleInputs.addInputPath(job,new Path("F:\\NIIT\\hadoopOnWindow\\input\\data\\seq"), SequenceFileInputFormat.class, SequenceFileInputMapper.class);/指定reducejob.setReducerClass(WordCountReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);//设置输出FileOutputFormat.setOutputPath(job,new Path(getOutputDir()));boolean result = job.waitForCompletion(true);if (result)System.out.println("运行成功");elseSystem.out.println("运行失败");}//用于产生随机输出目录public static String getOutputDir(){String prefix = "F:\\NIIT\\hadoopOnWindow\\output\\";long time = System.currentTimeMillis();int random = new Random().nextInt(1000);return prefix + "result_" + time + "_" + random;}
    }
    
  8. 本地运行代码,测试下结果正确与否

五、打包上传到集群中运行


  1. 上传emp.csv到hdfs中的datas目录下

  2. 本地运行测试结果正确后,需要对Driver类输入输出部分代码进行修改,具体修改如下:
    FileInputFormat.setInputPaths(job,new Path(args[0]));
    FileOutputFormat.setOutputPath(job,new Path(args[1]));

  3. 将程序打成jar包,需要在pom.xml中配置打包插件

    <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId> maven-assembly-plugin </artifactId><configuration><!-- 使用Maven预配置的描述符--><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><!-- 绑定到package生命周期 --><phase>package</phase><goals><!-- 只运行一次 --><goal>single</goal></goals></execution></executions></plugin></plugins></build>
    

    按照如下图所示进行操作
    在这里插入图片描述
    在这里插入图片描述

  4. 提交集群运行,执行如下命令:

    hadoop jar packagedemo-1.0-SNAPSHOT.jar  com.niit.mr.EmpJob /datas/emp.csv /output/emp/ 
    

    至此,所有的步骤已经完成,大家可以试试,祝大家好运~~~~

http://www.lbrq.cn/news/1598365.html

相关文章:

  • 做视频小网站犯法吗/德州seo整站优化
  • 英文外贸网站设计/数据分析师35岁以后怎么办
  • 山东省建设节能协会网站/net的网站建设
  • 日本r影片网站做我的奴隶/晚上看b站
  • 折扣券网站怎么做/山东最新消息今天
  • 怎样做营销型网站推广/流量平台有哪些
  • 做网站如何防止被坑/哈尔滨seo优化软件
  • dreamweaver设计网页步骤/自己做seo网站推广
  • 北京网站建设 降龙网/2022最新小学生新闻
  • 北京网站开发建设/软文营销文章
  • 自己做网站的图片/中国十大搜索引擎排名最新
  • 中国容桂品牌网站建设/百度app内打开
  • 牡丹江做网站的公司/电商网站建设公司哪家好
  • 建筑工程网登/网站seo优化技巧
  • 服务器不是自己的做违法网站/青岛的seo服务公司
  • discuz修改网站底部/百度网站名称和网址
  • 广州宝盈网络科技有限公司网站/郑州网站优化排名
  • wordpress php 5.2/seo搜索优化是什么
  • 设计一个网站的步骤/沈阳优化网站公司
  • 给赌博网站做设计/18岁以上站长统计
  • 电子商务网站建设的基本要素/aso优化分析
  • 阿里云做网站要几天/销售网络平台推广
  • 买下云服务器怎么做网站/如何推广自己产品
  • 深圳市住房城乡建设局网站/做一个公司网站需要多少钱
  • 浙江网站建设推广公司哪家权威/网站免费高清素材软件
  • 企业做网站需要哪些人员/免费下载百度
  • 四川省住房与城乡建设 厅网站/谁有恶意点击软件
  • 宝塔怎么做两个网站/网站推广平台有哪些
  • 网站搭建吧/盘多多搜索引擎入口
  • 北京市住房和建设委员会网站/重庆seo技术博客
  • 类内部方法调用,自注入避免AOP失效
  • 部署 Kibana 8.2.2 可视化管理 Elasticsearch 8.2.2 集群
  • 阿里云-通义灵码:解锁云原生智能开发新能力,让云开发更“灵”~
  • 13015计算机系统原理-速记宝典
  • 其它IO函数
  • Web 开发 11