当前位置:   article > 正文

MapReduce-合并去重实验_mapreduce在idea中实现去重和并

mapreduce在idea中实现去重和并


此实验在windows操作系统下进行的,使用IDEA编译运行

一、环境准备

参考HDFS的API操作(通过SpringBoot实现)

二、具体流程图

在这里插入图片描述

三、实现过程的完整代码

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
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;

/**
 * @author: 易霭珞
 * @description 实现小文件的合并和数据去重操作
 */
public class Merge {
    /**
     *
     * 对A,B两个文件进行合并,并剔除其中重复的内容,得到一个新的输出文件C
     */
    //重载map函数,直接将输入中的value复制到输出数据的key上
    public static class Map extends Mapper<Object, Text, Text, Text>{
        private static Text text = new Text();
        public void map(Object key, Text value, Context context) throws IOException,InterruptedException{
            text = value;
            context.write(text, new Text(""));
        }
    }

    //重载reduce函数,直接将输入中的key复制到输出数据的key上
    public static class Reduce extends Reducer<Text, Text, Text, Text>{
        public void reduce(Text key, Iterable<Text> values, Context context ) throws IOException,InterruptedException{
            context.write(key, new Text(""));
        }
    }

    public static void main(String[] args) throws Exception{
        //定义HDFS文件系统的用户(根据你的Hadoop用户而定)
        System.setProperty("HADOOP_USER_NAME","hduser");
        Configuration conf = new Configuration();
        //定义HDFS文件系统的地址
        conf.set("fs.default.name","hdfs://192.168.56.100:9000");
        //定义Job实例对象以及任务名称
        Job job = Job.getInstance(conf,"Merge and duplicate removal");
        job.setJarByClass(Merge.class);
        job.setMapperClass(Map.class);
        job.setCombinerClass(Reduce.class);
        job.setReducerClass(Reduce.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);
        //定义需要合并和去重的数据文件夹
        FileInputFormat.addInputPath(job, new Path("hdfs://192.168.56.100:9000/user/hduser/input"));
        //定义输出数据的文件路径
        FileOutputFormat.setOutputPath(job, new Path("hdfs://192.168.56.100:9000/user/hduser/input/out"));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

四、输出结果

运行前后的数据对比
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/780755
推荐阅读
相关标签
  

闽ICP备14008679号