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)删除。
用户投稿
上一篇 2022年6月16日 12:02
下一篇 2022年6月16日 12:02

相关推荐

  • 伊朗补时最后时刻连进两球,2比0击败威尔士

    亚洲球队的顽强仍在继续!25日晚间,首战以2比6败北的伊朗队,与威尔士队激战超过100分钟,并在超长补时的最后阶段攻入两球,最终2比0击败威尔士队。 全场比赛,伊朗队的攻势都要比威…

    2022年11月27日
  • 什么是推广cpa一篇文章带你看懂CPA推广渠道

    CPA渠道 CPA指的是按照指定的行为结算,可以是搜索,可以是注册,可以是激活,可以是搜索下载激活,可以是绑卡,实名认证,可以是付费,可以是浏览等等。甲乙双方可以根据自己的情况来定…

    2022年11月25日
  • 抖音直播带货有哪些方法技巧(抖音直播带货有哪些痛点)

    如今抖音这个短视频的变现能力越来越突显了,尤其是在平台上开通直播,更具有超强的带货属性,已经有越来越多的普通人加入到其中了。不过直播带货虽然很火,但是也不是每个人都能做好的,那么在…

    2022年11月24日
  • 明查|美国新冠后遗症患者中有16%症状严重以致无法工作?

    点击进入澎湃新闻全球事实核查平台 速览 – 网传数据比例无权威信源佐证,该比例有可能是结合了美国疾病防控中心和布鲁金斯学会的数据得出,但这两个机构的调研目的和样本都不同…

    2022年11月24日
  • 《宝可梦朱紫》钛晶团战怎么打?钛晶团战对战技巧

    宝可梦朱紫钛晶团战怎么打?在游戏中,玩家可以进行钛晶团战的玩法,但是有些难度,很多玩家还不清楚钛晶团战具体怎么打,下面一起来看一下宝可梦朱紫钛晶团战对战技巧。 宝可梦朱紫钛晶团战对…

    2022年11月23日
  • 淘宝运营数据分析的3个指标解析(运营数据分析怎么做)

    我们知道淘宝运营工作中对于数据的分析与整理是很重要的,这些工作乍一听可能比较难,但是也有一些相关的技巧可以让我们能够有效的找出对我们有用的数据,这样我们也能够更加直观的看出我们店铺…

    2022年11月20日
  • 京东店铺类型有哪些京东入驻有什么资质要求

    今天的互联网发展迅速,让传统企业有了更多选择,但也同样也对刚触网的商家增添了许多迷茫,近日知舟电商就收到很多商家朋友询问京东入驻相关问题,今天知舟君就给大家分享下。 一.京东入驻准…

    2022年11月18日
  • 1公顷等于多少平方千米(公顷等于多少平方米)

    四年级数学上册第二单元 公顷和平方千米 一、换算进率 1平方千米= 100公顷=1000000 平方米 1公顷= 10000平方米 1平方米=100平方分米 1平方分米= 100平…

    2022年11月18日
  • 微信缓存是什么 清理微信的缓存会不会清除聊天记录?

    软件使用的越久,产生的缓存垃圾也就越多。但是很多朋友不敢清理微信的缓存,怕把聊天记录一并清理了。那么清理微信缓存会不会删除聊天记录?想知道答案的小伙伴就跟小编一起来看看吧! 清理微…

    2022年11月18日
  • 网页版淘宝登录入口(淘宝网页版怎么进入)

    现在淘宝已经成为我们生活中必不可少的一个购物平台了,当需要什么东西的时候,直接打开淘宝搜索一下就可以了。这种趋势也让更多的商家入驻淘宝开店,选择在网上做生意。有些商家在管理淘宝店铺…

    2022年11月18日

联系我们

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