文档章节

MapReduce例程-气象站-计算最低、最高温度

悟空太多啦
 悟空太多啦
发布于 2014/08/15 12:45
字数 806
阅读 295
收藏 4

TemperatureMR.java

package cn.kissoft.hadoop.week05;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class TemperatureMR {

    public static void main(String[] args) throws Exception {
        if (args.length != 2) {
            System.err.println("Usage: Temperature <input path> <output path>");
            System.exit(-1);
        }
        Job job = new Job();
        job.setJarByClass(TemperatureMR.class);
        job.setJobName("Max and min temperature");
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        job.setMapperClass(TemperatureMapper.class);
        job.setReducerClass(TemperatureReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

TemperatureMapper.java

package cn.kissoft.hadoop.week05;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class TemperatureMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
    private static final int MISSING = 9999;

    @Override
    public void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {
        String line = value.toString();
        String year = line.substring(0, 4);
        int airTemperature = Integer.parseInt(line.substring(13, 19).trim());
        if (Math.abs(airTemperature) != MISSING) {
            context.write(new Text(year), new IntWritable(airTemperature));
        }
    }
}

MaxTemperatureReducer.java

package cn.kissoft.hadoop.week05;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class TemperatureReducer extends Reducer<Text, IntWritable, Text, IntWritable> {

    @Override
    public void reduce(Text key, Iterable<IntWritable> values, Context context)
            throws IOException, InterruptedException {

        int maxValue = Integer.MIN_VALUE;
        int minValue = Integer.MAX_VALUE;
        for (IntWritable value : values) {
            maxValue = Math.max(maxValue, value.get());
            minValue = Math.min(minValue, value.get());
        }
        context.write(key, new IntWritable(maxValue));
        context.write(key, new IntWritable(minValue));
    }
}

运行过程

[wukong@bd11 guide]$ hadoop jar pc.jar cn.kissoft.hadoop.week05.TemperatureMR ./ch02/1959.txt ./ch02/out/
Warning: $HADOOP_HOME is deprecated.


14/08/15 16:29:32 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
14/08/15 16:29:32 INFO input.FileInputFormat: Total input paths to process : 1
14/08/15 16:29:32 INFO util.NativeCodeLoader: Loaded the native-hadoop library
14/08/15 16:29:32 WARN snappy.LoadSnappy: Snappy native library not loaded
14/08/15 16:29:34 INFO mapred.JobClient: Running job: job_201408151617_0003
14/08/15 16:29:35 INFO mapred.JobClient:  map 0% reduce 0%
14/08/15 16:29:47 INFO mapred.JobClient:  map 100% reduce 0%
14/08/15 16:30:00 INFO mapred.JobClient:  map 100% reduce 100%
14/08/15 16:30:04 INFO mapred.JobClient: Job complete: job_201408151617_0003
14/08/15 16:30:04 INFO mapred.JobClient: Counters: 29
14/08/15 16:30:04 INFO mapred.JobClient:   Job Counters 
14/08/15 16:30:04 INFO mapred.JobClient:     Launched reduce tasks=1
14/08/15 16:30:04 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=14989
14/08/15 16:30:04 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
14/08/15 16:30:04 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
14/08/15 16:30:04 INFO mapred.JobClient:     Launched map tasks=1
14/08/15 16:30:04 INFO mapred.JobClient:     Data-local map tasks=1
14/08/15 16:30:04 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=12825
14/08/15 16:30:04 INFO mapred.JobClient:   File Output Format Counters 
14/08/15 16:30:04 INFO mapred.JobClient:     Bytes Written=19
14/08/15 16:30:04 INFO mapred.JobClient:   FileSystemCounters
14/08/15 16:30:04 INFO mapred.JobClient:     FILE_BYTES_READ=9180486
14/08/15 16:30:04 INFO mapred.JobClient:     HDFS_BYTES_READ=27544475
14/08/15 16:30:04 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=13886908
14/08/15 16:30:04 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=19
14/08/15 16:30:04 INFO mapred.JobClient:   File Input Format Counters 
14/08/15 16:30:04 INFO mapred.JobClient:     Bytes Read=27544368
14/08/15 16:30:04 INFO mapred.JobClient:   Map-Reduce Framework
14/08/15 16:30:04 INFO mapred.JobClient:     Map output materialized bytes=4590240
14/08/15 16:30:04 INFO mapred.JobClient:     Map input records=444264
14/08/15 16:30:04 INFO mapred.JobClient:     Reduce shuffle bytes=4590240
14/08/15 16:30:04 INFO mapred.JobClient:     Spilled Records=1251882
14/08/15 16:30:04 INFO mapred.JobClient:     Map output bytes=3755646
14/08/15 16:30:04 INFO mapred.JobClient:     Total committed heap usage (bytes)=218865664
14/08/15 16:30:04 INFO mapred.JobClient:     CPU time spent (ms)=6280
14/08/15 16:30:04 INFO mapred.JobClient:     Combine input records=0
14/08/15 16:30:04 INFO mapred.JobClient:     SPLIT_RAW_BYTES=107
14/08/15 16:30:04 INFO mapred.JobClient:     Reduce input records=417294
14/08/15 16:30:04 INFO mapred.JobClient:     Reduce input groups=1
14/08/15 16:30:04 INFO mapred.JobClient:     Combine output records=0
14/08/15 16:30:04 INFO mapred.JobClient:     Physical memory (bytes) snapshot=322985984
14/08/15 16:30:04 INFO mapred.JobClient:     Reduce output records=2
14/08/15 16:30:04 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=1455579136
14/08/15 16:30:04 INFO mapred.JobClient:     Map output records=417294

运行结果

[wukong@bd11 guide]$ hadoop fs -cat ./ch02/out/part-r-00000

Warning: $HADOOP_HOME is deprecated.

1959    418
1959    -400

截图


© 著作权归作者所有

悟空太多啦

悟空太多啦

粉丝 20
博文 86
码字总数 72074
作品 1
南京
其他
私信 提问
加载中

评论(1)

chuckpu
chuckpu
看看
大数据(hadoop-Mapreduce原理架构)

课程目标: 1:MapReduce的应用场景 2:MapReduce编程模型 3:MapReduce的架构 4:常见MapReduce应用场景 5:总结 MapReduce的定义 源自于Google的MapReduce论文 发表于2004年12月 Hadoop M...

这很耳东先生
2019/04/30
77
0
Hadoop的mapreduce的简单用法

 Mapreduce初析   Mapreduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),mapreduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(outpu...

魔法王者安琪拉
2018/08/23
61
0
MapReduce: 一个巨大的倒退

前言 databasecolumn 的数据库大牛们(其中包括PostgreSQL的最初伯克利领导:Michael Stonebraker)最近写了一篇评论当前如日中天的MapReduce技术的文章,引发剧烈的讨论。我抽空在这儿翻译一...

ddatsh
2011/11/04
4.6K
7
Hadoop、MapReduce、YARN和Spark的区别与联系

(1) Hadoop 1.0 第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中,HDFS由一个NameNode和多个DataNode组成,MapReduce由一个JobTracker和多个TaskTracker组成,对应...

cuiyaonan2000
2018/05/08
0
0
Spark和MapReduce的区别

性能: Spark在内存中处理数据,而MapReduce是通过map和reduce操作在磁盘中处理数据。所以从这方面讲Spark的性能是超过MapReduce的。但是当数据量比较大,无法全部读入内存时,MapReduce就比...

无精疯
2018/04/26
865
0

没有更多内容

加载失败,请刷新页面

加载更多

NASA的10条编码规则

关于NASA的10条编程规则,他们曾表示:这些规则的作用就像汽车上的安全带:最初,它们可能有点不舒服,但过了一会儿,它们的使用就变成了第二天性,而没有使用它们就变得不可想象。 Gerard J...

京东云技术新知
9分钟前
32
0
TortoiseSVN图标未显示在Windows 7下

我似乎无法在Windows 7下显示图标,我真的很想念Windows XP。 怎么修好? #1楼 他们在这里展示得很好 您使用的是64位版本的Windows 7以及32位版本的TortoiseSVN吗? 如果是这样,那么它们只会...

javail
33分钟前
43
0
开源播放器

DPlayer

glen_xu
40分钟前
134
0
gitlab Error:Gitaly - load linguist colors - permission denied

报错信息 2020-01-20_14:35:08.43180 time=“2020-01-20T14:35:08Z” level=info msg=“Starting Gitaly” version=“Gitaly, version 0.81.0, built 20180225.183225” 2020-01-20_14:35:0......

JennerLuo
47分钟前
125
0
微信小程序的自动化测试框架

微信发布了小程序的自动化测试框架Minium,提供了多种运行验证方式,其特点: 支持一套脚本,iOS & Android & 模拟器,三端运行 提供丰富的页面跳转方式,看不到也能去得到 可以获取和设置小...

测者陈磊
59分钟前
84
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部