• Java搭建MapReduce完成二次排序步骤


    1、构建新的作业

    Configuration conf=getConf();
    Job job=Job.getInstance(conf);
    job.setJarByClass(SortYearAndTemp2.class);

    2、设置输入输出目录

    Path inpath=new Path(conf.get("inpath"));
    Path outpath=new Path(conf.get("outpath"));
    FileInputFormat.addInputPath(job, inpath);
    FileOutputFormat.setOutputPath(job, outpath);

    3、设置Mapper Reducer函数

    job.setMapperClass(SortYearAndTemp2.SortYearAndTemp2Mapper.class);
      public static class SortYearAndTemp2Mapper extends Mapper<LongWritable, Text, Weather, Text>
    job.setReducerClass(SortYearAndTemp2.SortYearAndTemp2Reducer.class);
      public static class SortYearAndTemp2Reducer extends Reducer<Weather, Text, Text, NullWritable>

    4、设置输出格式

    job.setMapOutputKeyClass(Weather.class);
    job.setMapOutputValueClass(Text.class);
    job.setOutputValueClass(Text.class);
    job.setOutputKeyClass(NullWritable.class);

    5、指定分区方式

    job.setPartitionerClass(WeatherPartitioner.class);  //参数为Partitioner的子类
      创建Partitioner的子类:public static class WeatherPartitioner extends Partitioner<Weather, Text>
        重写getPartition()方法,返回int //指定分区方式

    6、指定分组方式

    job.setGroupingComparatorClass(WeatherGroup.class);  //参数为WritableComparator的子类
      创建WritableComparator的子类:public static class WeatherGroup extends WritableComparator
        构造无参构造器WeatherGroup(){super(Weather, true);} //重写父类带有参数的构造器
        重写compare()方法 //指定分组方式

    7、提交执行作业,等待作业完成之后退出虚拟机

    return job.waitForCompletion(true)?0:1;

    8、创建传递给key的类

    public static class Weather implements WritableComparable<Weather> 
      重写write()方法 //序列化
      重写readFields()方法 //反序列化
      重写compareTo()方法 //规定key参数类的排序规则
      设置set() get()方法
      构造带有全部参数和无参的构造器
  • 相关阅读:
    杂记-2
    2019CSP-S游记
    csp2020
    特征根法小记
    csp模拟赛低级错误及反思
    备份
    黑科技——树剖两次dfs转一次dfs!
    输出天干地支
    蓝桥0531-输出Y
    蓝桥0615-判断四位数字前后两组是否相等
  • 原文地址:https://www.cnblogs.com/qiangang/p/13686953.html
Copyright © 2020-2023  润新知