求最大值和最大k个值
来源:互联网 发布:网络视频监控施工方案 编辑:程序博客网 时间:2024/05/01 06:42
来源吴超7天视频
1.求最大K个值
import java.io.IOException;import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;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;public class TopKnum {static final String INPUT_PATH = "hdfs://hadoop0:9000/input";static final String OUT_PATH = "hdfs://hadoop0:9000/out";static final int K=100;public static void main(String[] args) throws Exception {Configuration conf = new Configuration();final FileSystem fileSystem = FileSystem.get(new URI(INPUT_PATH), conf);final Path outPath = new Path(OUT_PATH);if(fileSystem.exists(outPath)){fileSystem.delete(outPath, true);}final Job job = new Job(conf , TopKnum.class.getSimpleName());FileInputFormat.setInputPaths(job, INPUT_PATH);job.setMapperClass(MyMapper.class);job.setMapOutputKeyClass(LongWritable.class);job.setMapOutputValueClass(LongWritable.class);job.setReducerClass(MyReducer.class);job.setOutputKeyClass(LongWritable.class);job.setOutputValueClass(NullWritable.class);FileOutputFormat.setOutputPath(job, outPath);job.waitForCompletion(true);}static class MyMapper extends Mapper<LongWritable, Text, LongWritable, LongWritable>{private Long[] top = new Long[K];{for(int j=0;j<100;j++)top[j]=0L;}@Overrideprotected void map(LongWritable k1, Text v1,org.apache.hadoop.mapreduce.Mapper<LongWritable, Text, LongWritable, LongWritable>.Context context)throws IOException, InterruptedException {// TODO Auto-generated method stubLong temp=Long.parseLong(v1.toString());if(temp>top[0]){top[0]=temp;int i=0;for(;i<99&&temp>top[i+1];i++){top[i]=top[i+1];}top[i]=temp;}}@Overrideprotected void cleanup(org.apache.hadoop.mapreduce.Mapper<LongWritable, Text, LongWritable, LongWritable>.Context context)throws IOException, InterruptedException {// TODO Auto-generated method stubfor(int i=0;i<100;i++){context.write(new LongWritable(top[i]),new LongWritable(top[i]));}}}static class MyReducer extends Reducer<LongWritable, LongWritable, LongWritable, NullWritable>{private Long[] top = new Long[K];{for(int j=0;j<100;j++)top[j]=0L;}@Overrideprotected void reduce(LongWritable k2, Iterable<LongWritable> v2s,org.apache.hadoop.mapreduce.Reducer<LongWritable, LongWritable, LongWritable, NullWritable>.Context arg2)throws IOException, InterruptedException {// TODO Auto-generated method stubfor (LongWritable v2 : v2s) {Long temp=v2.get();if(temp>top[0]){int i=0;for(;i<99&&temp>top[i+1];i++){top[i]=top[i+1];}top[i]=temp;}}}@Overrideprotected void cleanup(org.apache.hadoop.mapreduce.Reducer<LongWritable, LongWritable, LongWritable, NullWritable>.Context context)throws IOException, InterruptedException {// TODO Auto-generated method stubfor(int i=0;i<100;i++){context.write(new LongWritable(top[i]), NullWritable.get());}}}}
2.求最大值
import java.net.URI;import mapreduce.WordCountApp;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;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.input.FileSplit;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;/** * 作业:求最大的100个值 */public class TopKApp {static final String INPUT_PATH = "hdfs://hadoop0:9000/input";static final String OUT_PATH = "hdfs://hadoop0:9000/out";public static void main(String[] args) throws Exception {Configuration conf = new Configuration();final FileSystem fileSystem = FileSystem.get(new URI(INPUT_PATH), conf);final Path outPath = new Path(OUT_PATH);if(fileSystem.exists(outPath)){fileSystem.delete(outPath, true);}final Job job = new Job(conf , TopKApp.class.getSimpleName());FileInputFormat.setInputPaths(job, INPUT_PATH);job.setMapperClass(MyMapper.class);job.setReducerClass(MyReducer.class);job.setOutputKeyClass(LongWritable.class);job.setOutputValueClass(NullWritable.class);FileOutputFormat.setOutputPath(job, outPath);job.waitForCompletion(true);}static class MyMapper extends Mapper<LongWritable, Text, LongWritable, NullWritable>{long max = Long.MIN_VALUE;protected void map(LongWritable k1, Text v1, Context context) throws java.io.IOException ,InterruptedException {final long temp = Long.parseLong(v1.toString());if(temp>max){max = temp;}};protected void cleanup(org.apache.hadoop.mapreduce.Mapper<LongWritable,Text,LongWritable, NullWritable>.Context context) throws java.io.IOException ,InterruptedException {context.write(new LongWritable(max), NullWritable.get());};}static class MyReducer extends Reducer<LongWritable, NullWritable, LongWritable, NullWritable>{long max = Long.MIN_VALUE;protected void reduce(LongWritable k2, java.lang.Iterable<NullWritable> arg1, org.apache.hadoop.mapreduce.Reducer<LongWritable,NullWritable,LongWritable,NullWritable>.Context arg2) throws java.io.IOException ,InterruptedException {final long temp = k2.get();if(temp>max){max = temp;}};protected void cleanup(org.apache.hadoop.mapreduce.Reducer<LongWritable,NullWritable,LongWritable,NullWritable>.Context context) throws java.io.IOException ,InterruptedException {context.write(new LongWritable(max), NullWritable.get());};}}
0 0
- 求最大值和最大k个值
- 求最大的K个值
- 求数组中最大K个值的下标
- 求数组中第K个最大的值
- 求第K个最大的数
- 面试题 集合里求k个最大值
- HDU-2639(01背包+求第k个最大值)
- 求N个值得最大值,最小值,和
- 利用python求数组中连续k个相同值的最大的k
- 5-36 求n以内最大的k个素数以及它们的和 (20分)
- PTA 求n以内最大的k个素数以及它们的和
- pta 习题集 5-14 求n以内最大的k个素数以及它们的和
- PTA教辅 求n以内最大的k个素数以及它们的和
- 求n以内最大的k个素数以及它们的和
- 求连续K个数的和最大
- 最大最小值:给n个实数,求它们之中的最大值和最小值,要求比较次数尽量小。
- 最大最小值:给n个实数,求它们之中的最大值和最小值,要求比较次数尽量小。
- Hadoop 案例6-----TopN问题:求最大的K个值并排序
- (一)Spring AOP:基于XML配置文件
- Docker的save和export命令的区别
- 第11周 程序阅读——继承和派生(3)
- 7.11
- 宜家V9-食品行业版设计目标与理念
- 求最大值和最大k个值
- 更改npm镜像源
- Android开发错误解决方法汇总
- 关于Java中方法调用时参数的传递
- 循环语句中的break、continue、return用法
- linux命令大全(自己制作,基于鸟书私房菜以及man)-A
- 初学python(三) list、tuple
- iOS开发中两个常见问题的处理
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法