• 实验6:Mapreduce实例——WordCount


    1. 启动hadoop

    Start-dfs.sh

     

    1. 创建在系统中创建一个的TXT文件,并将上面的数据包复制到文件中

     

    1. 将写好的文件从本地上传到hadoop

    (1)进入hadoop目录

     

    (2)上传文件

     

    1. eclipse中创建MapReduce程序命名为count,然后导入相关的jar

     

    然后还需要导入三个配置文件:其中log4j.properties是一个日志文件,如果没有这个文件程序就不会正常运行

     

     代码:WordCount java

    package test6;
    
    import java.io.IOException;  
    import java.util.StringTokenizer;  
    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.Mapper; 
    import org.apache.hadoop.mapreduce.Reducer;  
    import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;  
    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;  
    public class WordCount {  
     public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {  
    	        Job job = Job.getInstance();  
    	        job.setJobName("WordCount");  
    	        job.setJarByClass(WordCount.class);  
    	        job.setMapperClass(doMapper.class);  
    	        job.setReducerClass(doReducer.class);  
    	        job.setOutputKeyClass(Text.class);  
    	        job.setOutputValueClass(IntWritable.class);  
    	        Path in = new Path("hdfs://192.168.43.102:9000/user/hadoop/input/mapReduceTest2.txt");  
    	        Path out = new Path("hdfs://192.168.43.102:9000/user/hadoop/output5");  
    	        FileInputFormat.addInputPath(job, in);  
    	        FileOutputFormat.setOutputPath(job, out);  
    	        System.exit(job.waitForCompletion(true) ? 0 : 1);  
    	    }  
    	    public static class doMapper extends Mapper<Object, Text, Text, IntWritable>{  
    	        public static final IntWritable one = new IntWritable(1);  
    	        public static Text word = new Text();  
    	        @Override  
    	        protected void map(Object key, Text value, Context context)  
    	                    throws IOException, InterruptedException {  
    	            StringTokenizer tokenizer = new StringTokenizer(value.toString(), " ");  
    	                word.set(tokenizer.nextToken());  
    	                context.write(word, one);  
    	        }  
    	    }  
    	    public static class doReducer extends Reducer<Text, IntWritable, Text, IntWritable>{  
    	        private IntWritable result = 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();  
    	        }  
    	        result.set(sum);  
    	        context.write(key, result);  
    	        }  
    	    }  
    	}  
    

      

    实验结果:

  • 相关阅读:
    css3动画栈效果_1
    页面滚动时出现固定导航
    jquery定位到指定元素
    seajs之学习2
    seajs之学习1
    变态ie6之要求css与页面编码一致引发的问题
    ASP.NET学习笔记一
    C++学习笔记三(类和对象)
    C++学习笔记二
    unity3D学习笔记一
  • 原文地址:https://www.cnblogs.com/1gaoyu/p/11774050.html
Copyright © 2020-2023  润新知