美文网首页
2022-03-08

2022-03-08

作者: 眼君 | 来源:发表于2022-03-08 17:40 被阅读0次
    package com.bigdata.wordcount;
    import java.io.IOException;
    import org.apache.hadoop.io.LongWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Mapper;
    import org.apache.hadoop.mapreduce.Reducer;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.mapreduce.Job;
    import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
    
    
    public class WCMapper extends Mapper<LongWritable,Text,Text,LongWritable>{
        final LongWritable one = new LongWritable(1);
        @Override
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            String line = value.toString();
            String[] words = line.split("\t");
            for (String w:words) {
                context.write(new Text(w),one);
            }   
        }
    }
    
    public class WCReducer extends Reducer<Text,LongWritable,Text,LongWritable>{
        @Override
        protected void reduce(Text key, Iterable<LongWritable> values,Context context) throws IOException, InterruptedException {
            int valueout = 0;
            for(LongWritable value:values) {
                valueout += value.get();
            }
            context.write(key, new LongWritable(valueout));
        }
    }
    
    public class Driver {
        public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
            Configuration conf = new Configuration();
            Job job = Job.getInstance(conf);
            job.setJarByClass(Driver.class);
            job.setMapperClass(WCMapper.class);
            job.setReducerClass(WCReducer.class);
            job.setMapOutputKeyClass(Text.class);
            job.setMapOutputValueClass(LongWritable.class);
            job.setOutputKeyClass(Text.class);
            job.setOutputValueClass(LongWritable.class);
            FileInputFormat.addInputPath(job, new Path(args[0]));
            FileOutputFormat.setOutputPath(job,new Path(args[1]));
            job.waitForCompletion(true);
        }
    

    相关文章

      网友评论

          本文标题:2022-03-08

          本文链接:https://www.haomeiwen.com/subject/hgwarrtx.html