hadoop数据排序

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() {

//返回一个基本类型整型,谁大谁排后面.

//返回负数表示:o1 小于o2

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

//返回正数表示: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);

}

}

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月16日
下一篇 2022年6月16日

相关推荐

  • 昨天不是刚大跌吗?怎么今天又跌了

    亏麻了呀,昨天大跌2.9%本来想着今天回血一半的,结果今天又跌了你敢信?以新能源为主的成长基金涨起来非常猛,跌起来也是毫不留情,2个交易日新能源汽车指数跌了6个点,光伏指数跌了5个…

    2022年8月28日
  • 布朗:绿凯把我摆到交易市场,没有顾虑我的心情,他们伤透了我心

    NBA交易市场大鱼多,杜兰特的交易引发NBA球队疯狂试探。他们都希望得到联盟第一小前锋凯文杜兰特。凯尔特人队已经把新星杰伦布朗放到交易杜兰特的筹码中。 杰伦布朗不满凯尔特人接二连三…

    2022年7月28日
  • 云网融合趋势下运营商的数据安全防护体系探讨

    文 成都思维世纪科技有限责任公司董事长 章明珠 当前,新一代信息通信网络正在从以信息传递为核心的网络基础设施,向融合计算、存储、传送资源的智能化云网基础设施发生转变。在 5G 网络…

    2022年6月22日
  • 今年“618”收到吐槽类、消费维权信息超554万条

    6月30日,中消协发布2022年“618”消费维权舆情分析报告。 为进一步了解消费者在“618”期间消费的真切反馈,聚焦网络购物消费体验短板,中国消费者协会利用互联网舆情监测系统对…

    2022年6月30日
  • 2022年55页数据中台解决方案

    •建设基础数字技术平台 (运用云计算、人工智能、数字孪生等新一代信息技术,探索构建适应企业业务特点和发展需求的“数据中台”“业务中台”等新型IT架构模式) •建立系统化管理体系•构…

    2022年6月20日
  • 苹果A16曝光:CPU提升42%、GPU提升35%,媲美M1芯片

    虽然距离iPhone 14系列发布的时间还有一段时间,不过由于供应链渠道消息的泄露,有关iPhone 14系列的外观和配置信息已经在网上被大量曝光,从供应链透露的消息来看,iPho…

    2022年6月18日
  • 数据不输哈登!步行者的培养魔力有多大?湖人交易的好机会来了

    这两天因为威少、希尔德的交易重启,湖人和步行者又被联系到了一起。当然,根据曝出的消息来看,湖人首先还是欧文。所以,不排除和步行者的商讨交易是以此来压价欧文。 本赛季,希尔德在三分线…

    2022年7月24日
  • 时尚兼顾健康管理,佳明Venu 2 Plus入手分享

    自从年后,都在执行着减肥大计。不过室内器械运动时间长了,难免厌倦。所以周末期间还会到户外进行慢跑、骑车等有氧运动。为更科学进行减肥,在朋友推荐下,我入手了佳明Venu 2 Plus…

    2022年6月7日
  • 免费网络推广软件有哪些(十大免费好用拓客APP软件)

    不管是从事哪个行业,只要涉及到销售的板块,那么营销推广就是一项我们销售们的必备技能了,如何实现直接有效的拓客推广呢?“拓客APP”、“拓客软件”是值得我们再去深掘的工具。希望今天小…

    2022年4月18日
  • 血糖仪app开发,智能终端更便捷

    在现代社会,我们的生活质量越来越高了,尤其是在饮食方面,越来越丰富的视频让现代人可以有更多的选择和尝试,美味取代裹腹成为人们新的选择标准,甜食便成了当下的普遍的宠儿。这就导致一个较…

    2022年6月25日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息