在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    hadoop數(shù)據(jù)排序

    package cn.mr.topn;

    import java.util.TreeMap;

    import org.apache.hadoop.io.IntWritable;

    import org.apache.hadoop.io.LongWritable;

    import org.apache.hadoop.io.NullWritable;

    import org.apache.hadoop.io.Text;

    import org.apache.hadoop.mapreduce.Mapper;

    public class TopNMapper extends Mapper {

    private TreeMap repToRecordMap = new TreeMap();

    //

    //

    @Override

    public void map(LongWritable key, Text value, Context context) {

    String line = value.toString();

    String[] nums = line.split(” “);

    for (String num : nums) {

    repToRecordMap.put(Integer.parseInt(num), ” “);

    if (repToRecordMap.size() > 5) {

    repToRecordMap.remove(repToRecordMap.firstKey());

    }

    }

    }

    @Override

    protected void cleanup(Context context) {

    for (Integer i : repToRecordMap.keySet()) {

    try {

    context.write(NullWritable.get(), new IntWritable(i));

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    }

    package cn.mr.topn;

    import java.io.IOException;

    import java.util.Comparator;

    import java.util.TreeMap;

    import org.apache.hadoop.io.IntWritable;

    import org.apache.hadoop.io.NullWritable;

    import org.apache.hadoop.mapreduce.Reducer;

    public class TopNReducer extends Reducer {

    private TreeMap repToRecordMap = new TreeMap(new Comparator() {

    //返回一個(gè)基本類型整型,誰(shuí)大誰(shuí)排后面.

    //返回負(fù)數(shù)表示:o1 小于o2

    //返回0表示:表示:o1和o2相等

    //返回正數(shù)表示:o1大于o2。

    public int compare(Integer a, Integer b) {

    return b – a;

    }

    });

    public void reduce(NullWritable key, Iterable values, Context context)

    throws IOException, InterruptedException {

    for (IntWritable value : values) {

    repToRecordMap.put(value.get(), ” “);

    if (repToRecordMap.size() > 5) {

    repToRecordMap.remove(repToRecordMap.firstKey());

    }

    }

    for (Integer i : repToRecordMap.keySet()) {

    context.write(NullWritable.get(), new IntWritable(i));

    }

    }

    }

    package cn.mr.topn;

    import org.apache.hadoop.conf.Configuration;

    import org.apache.hadoop.fs.Path;

    import org.apache.hadoop.io.IntWritable;

    import org.apache.hadoop.io.NullWritable;

    import org.apache.hadoop.mapreduce.Job;

    import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

    public class TopNRunner {

    public static void main(String[] args) throws Exception {

    Configuration conf = new Configuration();

    Job job = Job.getInstance(conf);

    job.setJarByClass(TopNRunner.class);

    job.setMapperClass(TopNMapper.class);

    job.setReducerClass(TopNReducer.class);

    job.setNumReduceTasks(1);

    job.setMapOutputKeyClass(NullWritable.class);// map階段的輸出的key

    job.setMapOutputValueClass(IntWritable.class);// map階段的輸出的value

    job.setOutputKeyClass(NullWritable.class);// reduce階段的輸出的key

    job.setOutputValueClass(IntWritable.class);// reduce階段的輸出的value

    FileInputFormat.setInputPaths(job, new Path(“D:topNinput”));

    FileOutputFormat.setOutputPath(job, new Path(“D:topNoutput”));

    boolean res = job.waitForCompletion(true);

    System.exit(res ? 0 : 1);

    }

    }

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月16日 12:02
    下一篇 2022年6月16日 12:02

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息