wordcount_WordCount.jar - CSDN
  • wordcount完整总结

    2018-09-15 17:14:02
    2.编写wordcount代码 WordCountMapper类 import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; import java.io.IOExce...

    1.idea创建maven项目(百度查找)

    2.编写wordcount代码

    WordCountMapper类

    import org.apache.hadoop.io.LongWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Mapper;
    
    import java.io.IOException;
    
    public class WordCountMapper extends Mapper <LongWritable,Text, Text, LongWritable>{
        @Override
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            //获得一行数据
            String line = value.toString();
            //切分
            String[] words = line.split(" ");
            //循环遍历单词
            for (String word : words) {
                context.write(new Text(word), new LongWritable(1));
            }
        }
    }
    

    WordCountReducer类

     

    import org.apache.hadoop.io.LongWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Reducer;
    
    import java.io.IOException;
    
    public class WordCountReducer extends Reducer<Text, LongWritable, Text, LongWritable> {
    
        @Override
        protected void reduce(Text key, Iterable<LongWritable> value,Context context)
                throws IOException, InterruptedException {
            // TODO Auto-generated method stub
            //计数
            int count = 0;
            //值累加
            for (LongWritable l : value) {
                count += l.get();
            }
            context.write(key, new LongWritable(count));
        }
    }
    

    Driver类

    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.io.LongWritable;
    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.output.FileOutputFormat;
    
    import java.io.IOException;
    public class Driver {
        public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
            // 配置信息
            Configuration conf = new Configuration();
            //跑一个job
            Job job = Job.getInstance(conf);
            //设置程序入口
            job.setJarByClass(Driver.class);
            //指定mapper
            job.setMapperClass(WordCountMapper.class);
            job.setMapOutputKeyClass(Text .class);
            job.setMapOutputValueClass(LongWritable .class);
            //指定reducer
            job.setReducerClass(WordCountReducer.class);
            job.setOutputKeyClass(Text.class);
            job.setOutputValueClass(LongWritable.class);
    
            //指定输入路径和输出路径
            FileInputFormat.setInputPaths(job, new Path(args[0]));
            FileOutputFormat.setOutputPath(job, new Path(args[1]));
    
            //提交作业
                job.waitForCompletion(true);
        }
    
    }
    

    3.idea打包成jar包

    https://www.cnblogs.com/blog5277/p/5920560.html

    4.虚拟机运行wordcount

    hadoop jar 打成的jar包名  输入路径  输出路径

    举例: hadoop jar /aa.txt /output

    展开全文
  • 手写WordCount

    2018-10-14 21:53:27
    需求分析: 统计在文件中每一个字母出现的次数. 需要的jar包: 在安装包里面有对应的jar包: ... hadoop-2.6.4\share\hadoop\hdfs\hadoop-hdfs-2.6.4.jar ...hadoop-2.6.4\share\hadoop\hdfs\lib\所有jar包 ...

    需求分析:
    统计在文件中每一个字母出现的次数.
    需要的jar包:
    在安装包里面有对应的jar包:
    https://pan.baidu.com/s/1eFpKbExrpT7AcgQvpjvETQ
    hadoop-2.6.4\share\hadoop\hdfs\hadoop-hdfs-2.6.4.jar
    hadoop-2.6.4\share\hadoop\hdfs\lib\所有jar包

    hadoop-2.6.4\share\hadoop\common\hadoop-common-2.4.1.jar
    hadoop-2.6.4\share\hadoop\common\lib\所有jar包

    hadoop-2.6.4\share\hadoop\mapreduce\除hadoop-mapreduce-examples-2.6.4.jar之外的jar包
    hadoop-2.6.4\share\hadoop\mapreduce\lib\所有jar包

    编写业务代码:
    Mapper:

    package com.thp.mapper;
    
    import java.io.IOException;
    
    import org.apache.hadoop.io.IntWritable;
    import org.apache.hadoop.io.LongWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Mapper;
    
    public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
    	// map 方法的声明周期 : 框架每传递一行数据就被调用一次
    	// key : 这一行的起始点在文件中的偏移量
    	// value : 这一行的内容
    	@Override
    	protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
    		// 拿到一行的数据转换为String
    		String line = value.toString();
    		// 将这一行切分出各个单词
    		String[] words = line.split("");
    		// 遍历数组,输出<字母,1>
    		for(String word : words) {
    			context.write(new Text(word), new IntWritable(1));
    		}
    	}
    	
    	
    }
    
    

    Reduce:

    package com.thp.mapper;
    
    import java.io.IOException;
    
    import org.apache.hadoop.io.IntWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Reducer;
    
    public class WordCountReduce extends Reducer<Text, IntWritable, Text, IntWritable>{
    
    	
    	/**
    	 * reduce 方法提供reduce task进程来调用
    	 * 
    	 * reduce task会将shuffle阶段分发过来的大量k-v数据对进行聚合,聚合机制是相同的key的k-v对聚合为一组
    	 * 然后 reduce task 对每一组聚合k-v调用一次我们自定义的reduce方法
    	 */
    	// 声明周期:框架每传递一个kv组,reduce方法就被调用一次
    	@Override
    	protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
    		// 定义一个计数器
    		int count = 0;
    		// 遍历这一组kv所有的v,累加到count
    		for(IntWritable value : values) {
    			count += value.get();
    		}
    		context.write(key, new IntWritable(count));
    	}
    	
    	
    }
    
    

    主类:

    package com.thp.mapper;
    
    import java.io.IOException;
    
    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.FileInputFormat;
    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
    
    
    public class WordCountRunner {
    	// 把业务逻辑相关的信息(哪个是mapper,哪个是reducer,要处理的数据在哪里,输出的结果放在哪里...)描述成一个job对象
    	// 把这个描述好的job提交给集群去运行
    	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
    		Configuration conf = new Configuration();
    		Job wcjob = Job.getInstance(conf);
    		// 指定我这个job所在的jar包
    		wcjob.setJarByClass(WordCountRunner.class);
    		// 设置wcjob所用的mapper逻辑类为哪个类
    		wcjob.setMapperClass(WordCountMapper.class);
    		// 设置wcjob所用的reducer逻辑类为哪个类
    		wcjob.setReducerClass(WordCountReduce.class);
    		
    		// 设置我们的业务逻辑Reducer类的输出key和value的数据类型
    		wcjob.setOutputKeyClass(Text.class);
    		wcjob.setOutputValueClass(IntWritable.class);
    		
    		
    //		JobConf是旧API使用的,而我们需要的是新API
    		// 指定要处理的数据所在的位置
    		// FileInputFormat.setInputPaths(wcjob, "hdfs://bd1:9000/wordcount/input");
    		FileInputFormat.setInputPaths(wcjob, "hdfs://bd1:9000/wordcount/input/big.txt");
    		// FileOutputFormat.setOutputPath(wcjob, "hdfs://bd1:9000/wordcount/output/");
    		FileOutputFormat.setOutputPath(wcjob, new Path("hdfs://bd1:9000/wordcount/output/"));
    		
    		// 向yarn集群提交这个job
    		boolean res = wcjob.waitForCompletion(true);
    		
    		System.exit(res ? 0 : 1);
    		
    	}
    }
    
    

    将这个项目进行打包:
    打包之前要先运行一下主类的main方法,这样就能使用eclipse进行打包.
    在这里插入图片描述
    下一步:
    在这里插入图片描述

    在这里插入图片描述

    可以看一下这个wordcount.jar包里面的内容:
    在这里插入图片描述

    然后将这个wordcount.jar上传到hadoop服务器上,
    在这里插入图片描述

    big.txt:

    Hello tom
    Hello jim
    Hello ketty
    Hello world
    Ketty tom
    

    将这个 big.txt上传到hadoop的hdfs文件系统上:
    然后直接运行这个wordcount.jar文件就行
    运行的命令是:

    hadoop jar wordcount.jar com.thp.mapper.WordCountRunner
    

    在这里插入图片描述

    展开全文
  • hadoop实现wordcount

    2020-07-30 23:30:12
    通过hadoop 来进行感情分析,代码可以实现将几个GB大小的数据,来统计词的数量
  • MapReduce程序分为三部分: map ...这里先放出最经典的wordcount程序源码: public class WordCount extends Configured implements Tool{  //map public static class WordCountMap extends Mapper&...

    MapReduce程序分为三部分: map       reduce        driver

    这里先放出最经典的wordcount程序源码:

    public class WordCount extends Configured  implements  Tool{

            //map

    public static class WordCountMap extends Mapper<LongWritable, Text, Text, IntWritable>{
         private Text MapoutputKey=new Text();
         private final static IntWritable MapoutputValue=new IntWritable(1); 
    @Override
    protected void map(LongWritable key, Text value, Context context)
    throws IOException, InterruptedException {
    //得到value
    String lineValue=value.toString();
    //split
    StringTokenizer stringTokenizer=new StringTokenizer(lineValue);
    //迭代取出数据
    while(stringTokenizer.hasMoreTokens()){
    //得到输入的value
    String wordValue=stringTokenizer.nextToken();
    MapoutputKey.set(wordValue);
    //输出
    context.write(MapoutputKey, MapoutputValue);
    }
    }

    }

    //reduce
          public static class WordCountReduce extends Reducer<Text, IntWritable, Text, IntWritable>{
          private IntWritable outputValue=new IntWritable();
    @Override
    protected void reduce(Text key, Iterable<IntWritable> values,
    Context context)
    throws IOException, InterruptedException {
      int sum=0;
      for(IntWritable value:values){
    sum+=value.get();
      }
      outputValue.set(sum);
      //输出
      context.write(key, outputValue);
    }
    }

    //driver
    public int run(String[] args) throws Exception{
    //得到配置信息
    Configuration configurable=getConf();
    //创建Job
    Job job=Job.getInstance(configurable,this.getClass().getSimpleName());
    //运行jar
    job.setJarByClass(this.getClass());
    //设置job
    //1. input
    Path inPath=new Path(args[0]);
    FileInputFormat.addInputPath(job, inPath);
    //2.map
    job.setMapperClass(WordCountMap.class);
    job.setMapOutputKeyClass(Text.class);
    job.setMapOutputValueClass(IntWritable.class);
    //3.reduce
    job.setReducerClass(WordCountReduce.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    //4.output
    Path outPath=new Path(args[1]);
    FileOutputFormat.setOutputPath(job, outPath);
    //提交job
    boolean completion = job.waitForCompletion(true);

    return completion ? 0 : 1;
    }
    public static void main(String[] args) throws Exception{
    //得到配置信息
    Configuration configurable=new Configuration();
    //int status=new WordCount().run(args);
    int status=ToolRunner.run(configurable, new WordCount(), args);
    System.exit(status);
    }
    }

    这个wordcount程序可以在本地或者yarn上运行,首先要在eclipse中打成jar包,当然上边的代码要想直接运行,需要在maven中加入hadoop的jar包坐标,然后自动下载到本地仓库才可以,打包好后就跟hadoop中自带的wordcount程序运行过程一样,这里不进行细说,如果打包到运行测试有问题可以在文章末尾留言

    wordcount执行流程:

      input---->map-----reduce------output

    input:

    会文件按行分割形成<key,value>对,如下图所示:

    这一步由Mapreduce框架自动完成,其中key是偏移量,包含了回车所占的字符数,value是这一行的数据

    map:

    将分割好的<key,value>对交给用户定义的map方法处理,形成新的<key,value>对,如下图所示:

    得到map方法输出的<key,value>对后,Mapper会将他们按照key值进行排序,得到Mapper的最终输出结果,如下图:

    reduce:

    Reducer先对从Mapper接受的<key,value>对进行shuffle处理,如下图:

    然后再交给用户自定义的reduce方法进行合并处理,再得到新的<key,value>对,如下图:

    最后将这个<key,value>对作为wordcount的结果输出

    中,

     

    展开全文
  • 转-WordCount

    2019-05-12 20:29:27
    import org.apache.spark.{SparkConf, ...object WordCount { def main(args: Array[String]): Unit = { /** * 创建SparkConf()并设置App名称 * local指本地 * 2代表在本地起两个线程 */ v...
    import org.apache.spark.{SparkConf, SparkContext}//引入包中的几个成员,可以使用selector(选取器)
    object WordCount {
      def main(args: Array[String]): Unit = {
        /**
          * 创建SparkConf()并设置App名称
          * local指本地
          * 2代表在本地起两个线程
          */
        val conf = new SparkConf().setAppName("WC").setMaster("local[2]")
        /**
          * 创建SparkContext,该对象是提交的Spark App的入口
          */
        val sc = new SparkContext(conf)
        
        sc.textFile("E:\\words.txt").		//* 1:使用sc创建RDD并执行相应的transformation和action
          flatMap(_.split(" ")).			//* 2:按照空格进行切分
          map((_,1)).						//* 3:将得到的数组中的元素组合成(单词,1)的形式
          reduceByKey(_+_,1).				//* 4:统计相同的key出现多少次
          sortBy(_._2,false).				//* 5:根据出现的次数将元组进行排序,默认是升序,false代表降序
          saveAsTextFile("E:\\outputFile")	//* 6:保存到相应的本地目录下
        sc.stop()							//关闭资源
     
      }
    }
    
    import org.apache.spark.{SparkContext,SparkConf}
    object WordCount{
      			def main(args: Array[String]): Unit = {
       			 // 创建配置对象
    /al conf = new SparkConf().setAppName("WordCount").setMaster("local")
      		 	 // 可以通过命令行 指定
       			 val conf = new SparkConf().setAppName("WordCount")
        		 // 创建Spark操作对象
         		 val sc = new SparkContext(conf)
        		 // 创建 RDD 输入数据集
        		 val input = sc.textFile("/rootpark.txt")
       		 	 // 按行进行 分割
        		 val lines = input.flatMap(line=>line.split(" "))
        		 // 单词统计
        	val count = lines.map(word=>(word,1)).reduceByKey{case(x,y)=>x+y}
        		// 输出 保存为文件
        		// val output = count.saveAsTextFile("/root/sout")
        		// 屏幕直接打印 这样防止文件多次运行错误
        		val r = count.collect()
        		r.foreach(println)
      				}
    }
    
    
    展开全文
  • Word Count案例的shuffle

    2019-08-03 00:06:09
    Word Count 例子: [hadoop@10-9-15-140 hadoop-2.6.0-cdh5.7.0]$ bin/hadoop jar \ > ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar ... wordcount \ > /examples/input \ > /e...
  • WordCount

    2019-07-10 13:57:45
    https://github.com/BillCYJ/WordCount PSP表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 20 10 · Estimate · 估计这个...
  • wordcount详解

    2019-01-18 14:11:25
    1、MapReduce编程模型 MapReduce采用分而治之的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。简单来说,MapReduce就是“任务的分解...
  • 先确定你的hadoop集群已经启动(这很重要) ...这个就是一会儿要运行的wordcount文件: 在当前目录下新建一个文件夹test:mkdir test 新建一个计数文件file.txt:touch file.txt 打开file.txt并随意给些字符:v...
  • 一、引言 在完成了Storm的环境配置之后,想着鼓捣一下Hadoop的安装,网上面的教程好多,但是没有一个特别切合的,所以在安装的过程中还是遇到了很多的麻烦,并且最后不断的查阅资料,终于解决了问题,感觉还是很...
  • Spark的WordCount到底产生了多少个RDD 不少的同学在面试中会被问到:这样的一句标准的sparkcore的wordcount的代码到底能要产生几个RDD呢。相信大家对于一个标准的WordCount的代码一定不陌生: sc.textFile("...
  • 为了在IDEA中编写scala,今天安装配置学习了IDEA集成开发环境。IDEA确实很优秀,学会之后,用起来很顺手。关于如何搭建scala和IDEA开发环境,请看...用Scala和Java实现WordCount,其中Java实现的JavaWordCount是spar
  • 可以毫不夸张的说,几乎开发中绝大部分的MR程序都是基于wordcount编程模型而来,或者说用wordcount变化而来(改变的主要是业务方面的逻辑)。所以,熟练掌握wordcount编程模型,是掌握MR编程的基础。 MAPREDUCE...
  • 大数据:Hadoop入门案例,命令行wordcount统计 以Hadoop自带的wordcount为例,说明如何在Windows环境下,统计若干文件中的单词出现次数。 上传要统计的文件。假设在计算机本地有三个文件,f1.txt,f2.txt,f3.txt...
  • 大数据入门:WordCount程序解析 文章目录大数据入门:WordCount程序解析一、输入二、程序解析三、输出四、需要注意的地方 为一个顽固的家伙写的,都要考试了还不让我给详细讲一下,我就想白眼死你!!! 一、输入 ...
  • spark shell仅在测试和验证我们的程序时使用的较多,...首先在IDEA上编辑maven工程,在maven工程中的src填写wordcount代码,在xshell上运行(需连接集群结点),因wordcount程序运行需txt文档,因此还涉及在hdfs上的...
  • WordCount
  • wordcount :一个文本处理中常用的程序,用来统计文件中所有单词出现的次数。 MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”,及他们...
  • 在使用idea开发wordcount实例中,首先构建一个maven工程,需要引入的依赖有: &lt;repositories&gt; &lt;repository&gt; &lt;id&gt;apache&lt;/id&gt; &lt;url&gt;...
  • 废话不多说,最近在学hadoop,然后利用docker搭建的集群,网上有利用docker搭建hadoop的博客教程。 但是需要提醒一下,我看的...英文的wordcount跑成功之后,寻思利用分词做个中文的wordcount。 我是按照视频来的,就
1 2 3 4 5 ... 20
收藏数 41,490
精华内容 16,596
关键字:

wordcount