日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop入门(二十四)Mapreduce的求TopK程序

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop入门(二十四)Mapreduce的求TopK程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介

求TopK是算法中最常使用到的,現在使用Mapreduce在海量數據中統計數據的求TopK。

?

二、例子

(1)實例描述
給出三個文件,每個文件中都存儲了若干個數值,求所有數值中的求Top 5。

樣例輸入: ???????????????????????????????????????????
1)file1: ?

1 2 3 7 9 -99 2


2)file2: ?

11 2 23 17 9 199 22


3)file3: ?

21 12 3 17 2 39 12


?期望輸出:

199 39 23 22 21

?

(2)問題分析
實現統計海量數據的求TopK,不能將所有的數據加載到內存,計算只能使用類似外部排序的方式,加載一部分數據統計求TopK,接著加載另一部分進行統計TopK。

(3)實現步驟

1)Map過程?
????首先使用默認的TextInputFormat類對輸入文件進行處理,得到文本中每行的偏移量及其內容。顯然,Map過程首先必須分析輸入的<key,value>對,得到數值,然后在mapper中統計單個分塊的求TopK。

2)Reduce過程?
????經過map方法處理后,Reduce過程將獲取每個mapper的求TopK進行統計,分行統計出總的TopK。

?

(3)關鍵代碼

package com.mk.mapreduce;import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; 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.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;import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.Collections; import java.util.List;public class TopK {public static class TopKMapper extends Mapper<LongWritable, Text, IntWritable, NullWritable> {private List<Integer> top5 = new ArrayList<>(5);@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {if (StringUtils.isBlank(value.toString())) {System.out.println("空白行");return;}Integer v = Integer.valueOf(value.toString().trim());if(top5.size()<5){top5.add(v);}else{Integer min = Collections.min(top5);if (min < v) {top5.remove(min);top5.add(v);}}}@Overrideprotected void cleanup(Context context) throws IOException, InterruptedException {for (Integer v : top5)context.write(new IntWritable(v), NullWritable.get());}}public static class TopKReducer extends Reducer< IntWritable, NullWritable,IntWritable, NullWritable> {private List<Integer> top5 = new ArrayList<>(5);@Overrideprotected void reduce(IntWritable key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {Integer v = key.get();if(top5.size()<5){top5.add(v);}else{Integer min = Collections.min(top5);if (min < v) {top5.remove(min);top5.add(v);}}}@Overrideprotected void cleanup(Context context) throws IOException, InterruptedException {top5.sort((a,b)->b-a);for (Integer v : top5)context.write(new IntWritable(v), NullWritable.get());}}public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {String uri = "hdfs://192.168.150.128:9000";String input = "/topk/input";String output = "/topk/output";Configuration conf = new Configuration();if (System.getProperty("os.name").toLowerCase().contains("win"))conf.set("mapreduce.app-submission.cross-platform", "true");FileSystem fileSystem = FileSystem.get(URI.create(uri), conf);Path path = new Path(output);fileSystem.delete(path, true);Job job = new Job(conf, "TopK");job.setJar("./out/artifacts/hadoop_test_jar/hadoop-test.jar");job.setJarByClass(TopK.class);job.setMapperClass(TopKMapper.class);job.setReducerClass(TopKReducer.class);job.setMapOutputKeyClass(IntWritable.class);job.setMapOutputValueClass(NullWritable.class);job.setOutputKeyClass(IntWritable.class);job.setOutputValueClass(NullWritable.class);FileInputFormat.addInputPaths(job, uri + input);FileOutputFormat.setOutputPath(job, new Path(uri + output));boolean ret = job.waitForCompletion(true);System.out.println(job.getJobName() + "-----" + ret);} }

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Hadoop入门(二十四)Mapreduce的求TopK程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久影视av | 国产精品久久久久久亚洲伦 | 国产福利免费视频 | 国产人妖一区二区 | 日韩人妻精品一区二区 | 香蕉污视频在线观看 | 日本爽爽 | 女人扒开屁股让男人桶 | 激情综合激情 | 日本中文字幕有码 | 视频在线一区二区 | 黄色网页免费在线观看 | 精品无码久久久久久久久果冻 | 欧美人与按摩师xxxx | 久久亚洲精品石原莉奈 | 亚洲午夜一区二区 | 九九视频在线播放 | 国产日韩视频在线观看 | 午夜精品无码一区二区三区 | 99re视频在线 | 亚洲美免无码中文字幕在线 | 牛牛在线 | av天天看 | 久久亚洲av成人无码国产电影 | 日本a级免费 | 精品国产1区| 中文字幕大全 | 免费在线激情视频 | 亚洲精品aⅴ中文字幕乱码 国产精品调教视频 | 人与动物黄色片 | 中文字幕丝袜诱惑 | 国产精品久久久久久久久免费桃花 | 日韩亚洲国产欧美 | 精品一区二区三区在线观看 | 久久婷婷视频 | 一区二区不卡 | 牛牛澡牛牛爽一区二区 | 欧美在线色| www.毛片com| 久久精品在线播放 | 中文字幕一区二区人妻电影 | 神马一区二区三区 | www.精品在线 | 亚洲欧美日本在线 | 91日韩中文字幕 | 国产网站av | 公车乳尖揉捏酥软呻吟 | 日韩视频在线免费播放 | 香蕉视频久久久 | 亚洲国产精品18久久久久久 | 亚洲欧洲日韩综合 | 亚洲欧美激情另类 | 国产ts在线播放 | 精品国产精品三级精品av网址 | 亚洲欧美伦理 | 国产美女激情 | 玖玖国产 | 中文字幕91 | 精品人妻少妇嫩草av无码专区 | 少妇又紧又色又爽又刺激 | 国产精品99久久久精品无码 | 日韩一区2区| 亚洲天堂一二三 | 2018天天操| 免费国产a| 精品二区在线观看 | 久久综合亚洲色hezyo国产 | 中国av一级片 | 全程偷拍露脸中年夫妇 | 性色欲网站人妻丰满中文久久不卡 | 欧州一区二区 | 日本爽爽 | 理论片中文字幕 | 中文字幕一区二区在线播放 | 在线麻豆视频 | 成人人伦一区二区三区 | 免费播放毛片精品视频 | 中文字幕在线视频免费观看 | 亚州av在线播放 | 五月婷婷在线观看 | 97人妻人人澡人人爽人人精品 | 艳妇臀荡乳欲伦交换gif | 美女隐私黄www网站动漫 | 国产18av| 黄色网络在线观看 | 在线不欧美 | 亚洲成年人 | 特级毛片在线观看 | 美女福利视频网 | 毛色毛片| 国产aaa视频 | 91香蕉视频在线看 | 日日摸天天爽天天爽视频 | 成人69视频 | 农村妇女精品一区二区 | 国产黄大片| 亚洲精品视频在线观看视频 | 亲嘴脱内衣内裤 | 白白色免费视频 |