MapReduce——计算温度最大值 (基于全新2.2.0API)


deprecated: Job类的所有Constructors, 新的API用静态方法getInstance(conf)来去的Job的实例;

Code:

 import java.io.IOException;
 import java.util.Iterator;

 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.conf.Configured;
 import org.apache.hadoop.io.LongWritable;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.mapreduce.Mapper;
 import org.apache.hadoop.mapreduce.Reducer;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.util.ToolRunner;
 import org.apache.hadoop.mapreduce.Job;
 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

 public class getMaxTemperature  extends Configured implements Tool {

   class MaxTemperatureMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
     @Override
     public void map(LongWritable key, Text val, Context context) throws IOException, InterruptedException {
       String line = val.toString();
       String year = line.substring(15, 19);

       int Temperature;
       if (!hasPlus(line)){
         Temperature = Integer.parseInt(line.substring(87, 92));
       } else {
         Temperature = Integer.parseInt(line.substring(88,92));
       }
       String qual = line.substring(92, 93);
       if(!matched(qual)) {
         context.write(new Text(year), new IntWritable(Temperature));
    }

     }

     private boolean hasPlus(String line) {
       return line.charAt(87) == '+' ?  true : false;
     }

     private boolean matched(String line) {
         return line.matches("[01459") ? true : false;
     }

   }

   class MaxTemperatureReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
     @Override
     public void reduce(Text key, Iterable<IntWritable> vals, Context context) throws IOException, InterruptedException {
       int maxValue = Integer.MIN_VALUE;
       for( IntWritable value : vals ) {
         maxValue = Math.max(maxValue, value.get());
       }
       context.write(key, new IntWritable(maxValue));
     }
   }

     @Override
     public int run(String[] args) throws Exception {
       Configuration conf = getConf();
       Job job = Job.getInstance(conf);
       job.setJobName("helloRuby");
       job.setJarByClass(getClass());
       FileInputFormat.addInputPath(job, new Path(args[0]));
       FileOutputFormat.setOutputPath(job, new Path(args[1]));

       job.setMapperClass(MaxTemperatureMapper.class);
       job.setCombinerClass(MaxTemperatureReducer.class);
       job.setReducerClass(MaxTemperatureReducer.class);

       job.setOutputKeyClass(Text.class);
       job.setOutputValueClass(IntWritable.class);

       return job.waitForCompletion(true) ? 0 : 1;
     }

   public static void main(String[] args) throws Exception {
     ToolRunner.run(new getMaxTemperature() , args);
   }
 }

MapReduce——计算温度最大值 (基于全新2.2.0API)的更多相关文章

  1. MapReduce计算每年最大值测试样例生成程序

    Demo.java package com.java; import java.io.BufferedWriter; import java.io.File; import java.io.FileW ...

  2. MapReduce计算每年最大值

    1. 测试文件生成程序,参考 https://www.cnblogs.com/jonban/p/10555364.html MapReduce程序示例如下: 2. 新建Maven项目  hadoop ...

  3. write & read a MapFile(基于全新2.2.0API)

    write & read a  MapFile import java.io.IOException; import org.apache.hadoop.io.IntWritable; imp ...

  4. write & read a sequence file(基于全新2.2.0API)

    write & read a sequence file write & read a sequence file import java.io.IOException; import ...

  5. Configurataion Printer(基于全新2.2.0API)

    Configurataion Printer import java.util.Map.Entry; import org.apache.hadoop.conf.Configuration; impo ...

  6. Hadoop—MapReduce计算气象温度

    Hadoop-MapReduce计算气象温度 1 运行环境说明 1.1 硬软件环境 主机操作系统:Mac OS 64 bit ,8G内存 虚拟软件:Parallers Desktop12 虚拟机操作系 ...

  7. 使用mapreduce计算环比的实例

    最近做了一个小的mapreduce程序,主要目的是计算环比值最高的前5名,本来打算使用spark计算,可是本人目前spark还只是简单看了下,因此就先改用mapreduce计算了,今天和大家分享下这个 ...

  8. MapReduce计算模型的优化

    MapReduce 计算模型的优化涉及了方方面面的内容,但是主要集中在两个方面:一是计算性能方面的优化:二是I/O操作方面的优化.这其中,又包含六个方面的内容. 1.任务调度 任务调度是Hadoop中 ...

  9. (第4篇)hadoop之魂--mapreduce计算框架,让收集的数据产生价值

    摘要: 通过前面的学习,大家已经了解了HDFS文件系统.有了数据,下一步就要分析计算这些数据,产生价值.接下来我们介绍Mapreduce计算框架,学习数据是怎样被利用的. 博主福利 给大家赠送一套ha ...

随机推荐

  1. 对比MySQL,什么场景MongoDB更适用

    原文链接: http://page.factj.com/blog/p/4078 MongoDB已经流行了很长一段时间,相对于MySQL,究竟什么场景更需要用MongoDB?下面是一些总结. 更高的写入 ...

  2. HTML5 Canvas 绘制时钟

    网上会看到很多绘制的时钟,看代码也是云里雾里,自学了下Canvas,觉得不难,就自己做了一个. 先看一下截图: 比较简陋,但是该有的都有了,样式只加了个阴影. html代码就不贴了,就一个canvas ...

  3. Java多线程的安全问题

    /*多线程的安全问题1.为什么会出现安全问题?因为程序在运行时,会出现一个线程在判断条件满足后,具备了执行资格,但没有运行代码后一个线程也判断了条件,也具备了执行资格,后一个线程运行了代码,但这时候, ...

  4. 《C和指针》

    <C和指针> static global varibale VS global variable static function VS normal function 数组变量 VS 字符 ...

  5. Executors 构建线程池

    Executors包含一系列静态方法,可以用于构建线程池. 返回实现了 ExecutorService 接口的对象: newCachedThreadPool newFixedThreadPool(in ...

  6. 文件服务——Vsftpd

    文件传输协议(FTP): 能够让用户在互联网中上传.下载文件的文件协议,FTP服务就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端和FTP客户端的配合才行. 通常用户使用FTP客户端软 ...

  7. (转)web.config 为某个单独页面设置编码格式

    原文链接:http://www.cnblogs.com/mytechblog/articles/1937407.html 全站应用utf-8格式,在web.config里的<system.web ...

  8. linux系统 备份与还原

    linux 系统备份与还原备份系统:1.成为 root 用户: su root2.进入根目录: cd /3.用tar命令打包压缩:tar cvpjf 压缩包名.tar.bz2 --exclude=/压 ...

  9. MVC文件上传-使用jQuery.FileUpload和Backload组件实现文件上传

    本篇使用客户端jQuery-File-Upload插件和服务端Badkload组件实现多文件异步上传.MVC文件上传相关兄弟篇: 处理文件上传的服务端组件Backload 用于处理文件上传的服务端组件 ...

  10. MIT 2012分布式课程基础源码解析-线程池实现

    主要内容 ScopedLock 队列实现 线程池实现 在正式讲解线程池实现之前,先讲解两个有用的工具类: ScopedLock fifo队列 ScopedLock: ScopedLock是局域锁的实现 ...