利用mapreduce统计单词出现的次数

需求描述:

利用mapreduce,统计单词出现的次数

设计思路:

利用mapreduce统计单词出现的次数_第1张图片

代码设计:

目录结构:

利用mapreduce统计单词出现的次数_第2张图片

 

 pom.xml:

 



    4.0.0

    com.yanlong
    hadoop-04
    1.0-SNAPSHOT

    
        
            cloudera
            https://repository.cloudera.com/artifactory/cloudera-repos/
        
    

    
        
            org.apache.hadoop
            hadoop-common
            2.7.4
        
        
            org.apache.hadoop
            hadoop-hdfs
            2.7.4
        
        
            org.apache.hadoop
            hadoop-client
            2.7.4
        
        
            org.apache.hadoop
            hadoop-mapreduce-client-core
            2.7.4
        
    

    
        
            
                org.apache.maven.plugins
                maven-jar-plugin
                2.4
                
                    
                        
                            true
                            lib/
                            cn.itcast.mapreduce.flowsum1.WordCountRunner
                        
                    
                
            
        
    

WordCountMapper

package cn.itcast.mapreduce.flowsum1;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;
import java.io.Serializable;

public class WordCountMapper extends Mapper implements Serializable{

    @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 IntWritable(1));
        }
    }
}

 

WordCountMapperReducer

package cn.itcast.mapreduce.flowsum1;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class WordCountMapperReducer extends Reducer {
    /**
     *
     * todo
     */
    @Override
    protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {
        int count=0;
        for (IntWritable value : values) {
            count +=value.get();
        }

        context.write(key,new IntWritable(count));
    }
}
package cn.itcast.mapreduce.flowsum1;

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 {
    public static void main(String[] args) throws Exception {
        //1.配置参数,用于指定mr运行时相关的参数属性
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "wordcount");

        //2.指定mr运行的类
        job.setJarByClass(WordCountRunner.class);

        //3.指定mr程序的m,r类
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountMapperReducer.class);


        //4指定map输出kv类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);

        //指定ruduce输出的kv类型,也就是mr的最终输出结果
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        //指定mr程序的输出路径
        FileInputFormat.addInputPath(job,new Path("/huanhuan/input"));
        FileOutputFormat.setOutputPath(job,new Path("/wordcount/out"));

        //提交文本mr文本程序
        //job.submit();

        boolean result = job.waitForCompletion(true);//提交mr程序,并且开始任务执行监控的功能
        //如果mr程序执行成功,退出0,否则1
        System.exit(result?0:1);

    }
}

生成jar包 :
 

利用mapreduce统计单词出现的次数_第3张图片

然后把生成的jar上传到服务器上。

hadoop集群测试

查看:

利用mapreduce统计单词出现的次数_第4张图片

 

补充:

利用mapreduce统计单词出现的次数_第5张图片

 

 利用mapreduce统计单词出现的次数_第6张图片

 利用mapreduce统计单词出现的次数_第7张图片

 

利用mapreduce统计单词出现的次数_第8张图片 

结果查看:

利用mapreduce统计单词出现的次数_第9张图片

利用mapreduce统计单词出现的次数_第10张图片

利用mapreduce统计单词出现的次数_第11张图片

 

利用mapreduce统计单词出现的次数_第12张图片

 下载查看以后看到:

利用mapreduce统计单词出现的次数_第13张图片

 

本地测试:

修改代码:

利用mapreduce统计单词出现的次数_第14张图片

 

准备数据:

hadoop hive allen 
itcast hadoop
hadoop

利用mapreduce统计单词出现的次数_第15张图片

 利用mapreduce统计单词出现的次数_第16张图片

 

查看计算结果:

利用mapreduce统计单词出现的次数_第17张图片

 

你可能感兴趣的:(hadoop(公开版))