气象数据准备:

1. 下载1993年到2003年每年的部分气象数据

ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/
2. 下载的文件格式是*.gz,用zcat命令将其解压并上传到hdfs
zcat *.gz>1993.txtbin/hadoop fs -put 1993.txt /feixu/input
3. 查看hdfs上的气象数据,总大小约1.2G

MapReduce代码:
package com.oracle.temperature;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 AvgTemperatureMapper 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(15, 19);        int airTemperature;

        if (line.charAt(87) == '+') { // parseInt doesn't like leading plus signs            airTemperature = Integer.parseInt(line.substring(88, 92));        } else {            airTemperature = Integer.parseInt(line.substring(87, 92));        }

        String quality = line.substring(92, 93);        if (airTemperature != MISSING && quality.matches("[01459]")) {          context.write(new Text(year), new IntWritable(airTemperature));        }    }}
import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;

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

    @Override    public void reduce(Text key, Iterable<IntWritable> values, Context context)  throws IOException, InterruptedException {        long totalNum = 0;      long totalValue = 0;     int average = 0;        for (IntWritable value : values) {         totalNum ++;            totalValue +=value.get();        }

        average = (int)(totalValue/totalNum);        context.write(key, new IntWritable(average));    }}
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 AvgTemperature {

    public static void main(String[] args) throws Exception {        if (args.length != 2) {             System.err.println("Usage: AverageTemperature <input path> <output path>");              System.exit(-1);        }

        Job job = new Job();        job.setJarByClass(AvgTemperature.class);        job.setJobName("Average temperature");

        FileInputFormat.addInputPath(job, new Path(args[0]));        FileOutputFormat.setOutputPath(job, new Path(args[1]));

        job.setMapperClass(AvgTemperatureMapper.class);        job.setReducerClass(AvgTemperatureReducer.class);        job.setOutputKeyClass(Text.class);        job.setOutputValueClass(IntWritable.class);        System.exit(job.waitForCompletion(true) ? 0 : 1);    }}

运行JOB

Map Count: 29

Reduce Count: 1
Map Input Records: 4,781,181
Reduce Output Records: 21

Hadoop分析NCDC气象数据相关推荐

  1. NCDC气象数据的提取与处理(一):获取站点列表

    目录 1.站点查询 2.下载站点列表 方法1 方法2 3.站点筛选 NCDC气象数据的下载可以参考:http://t.csdn.cn/ZBQJh 如果只想获取研究区域内的站点,同时又对站点观测起止时间 ...

  2. hadoop分析之二元数据备份方案的机制

    1.NameNode启动加载元数据情景分析 NameNode函数里调用FSNamesystemm读取dfs.namenode.name.dir和dfs.namenode.edits.dir构建FSDi ...

  3. python处理ncdc气象数据并利用arcgis可视化

    作者已经处理好的数据如下 中国2020年均气温数据点加栅格.zip-讲义文档类资源-CSDN下载 数据格式如下 所有文件 对2020年文件进行查看(共有412个站点数据) 打开其中一个进行查看共有12 ...

  4. 使用Hadoop分析气象数据完整版(附带完整代码)

    <分布式>布置了一道小作业,让我花了7天时间学习了Hadoop...现在终于可以正式地做这个作业了,记录一下. 使用Hadoop分析气象数据 1 获取数据 1.1 下载数据 1.2 数据格 ...

  5. MapReduce分析NCDC 年气象数据最低温度与最高温度

    利用hadoop计算技术对采集的气象数据信息进行处理,主要分两个阶段:mapper阶段和reducer阶段,mapper阶段主要是对日志文件进行按行读取并进行字符串截取,reducer阶段对mappe ...

  6. 基于python的气象数据分析_基于python的《Hadoop权威指南》一书中气象数据下载和map reduce化数据处理及其......

    文档内容: 1:下载<hadoop权威指南>中的气象数据 2:对下载的气象数据归档整理并读取数据 3:对气象数据进行map reduce进行处理 关键词:<Hadoop权威指南> ...

  7. sklearn 读取csv_气象数据再分析数据的读取方式(GRIB格式为例)

    在对全球环境进行研究中,我们总会遇到欧洲中期预报中(European Centre for Medium-Range Weather Forecasts)等发布的气象再分析数据,例如,我在ESA官网上 ...

  8. Hadoop实战系列之MapReduce 分析 Youtube视频数据

    Hadoop实战系列之MapReduce 分析 Youtube视频数据 一.实战介绍 MapReduce 是 Hadoop 的计算框架. 在运行一个 MR 程序时,任务过程被分为两个阶段:Map 阶段 ...

  9. 基于Python分析气象数据教程-1

    前言 本笔记介绍了如何使用 Python.pandas 和 SciPy 对天气数据进行基本分析. 它不包含对气象科学的贡献,但说明了如何生成简单的图和基本模型来拟合一些真实的物理观测. 一.相关库引入 ...

最新文章

  1. 月薪40~50K|波波生活信息技术公司招聘高级算法工程师
  2. 大道至简——失败也是积累
  3. flume-ng命令
  4. mysql 字符串某个位置_mysql 定位字符串的位置
  5. 电阻阻值换算关系和色环电阻度数
  6. 【C#】Excel操作——两个Excel表格比较,如果相同跳过,如果不同将复制到一个表格
  7. 国际市场营销知识框架图_留学热门丨伦敦里士满大学市场营销本科专业
  8. 华光职业学院计算机专业,关于给予张庆俊等同学省高校计算机一级 考试成绩优秀奖励的通知...
  9. 网页 Failed to initialize player‘s 3D settings 小游戏4399 修复
  10. Breast Cancer Wisconsin (Diagnostic) Data Set
  11. android 怎么绘制圆形,Android编程绘制圆形图片的方法
  12. Cura Engine 源码解析:Settings
  13. 速学TypeScript-精简划重点手册-中册
  14. OpenCV2.4.13 文本分割(水平垂直,直方图投影)
  15. 王者转号仅显示可转移的服务器,王者荣耀转移账号是免费的吗 角色转移进度怎么查看...
  16. 【训练日记】20161028
  17. COLA 4.x和DDD项目实践精粹
  18. 调用百度AI接口实现图片文字识别
  19. 2015百度之星复赛(hdu5258 - 5262)
  20. SpringBoot的Undertow和Tomcat对比

热门文章

  1. Oracle 11g中的IO Calibrate(IO校准)
  2. 红太狼和灰太狼的囧人爱情
  3. 用ChatGPT可以去微博做个大V了(狗头)
  4. 面对同行抄袭或者抹黑,应该怎么办?
  5. 一个屌丝程序猿的人生(九十)
  6. 大学计算机上机实验期末考试题,《大学计算机基础》上机实验报告
  7. 龙讯系列视频转换,LT9211,LT8918,功能:lvds转BT656,lvds转mipi(CSI\DSI)RGB转MIPI(DSI\CSI) BT656\601\1120转HDMI1.4\DVI
  8. 漫威《黑豹2:瓦坎达万岁》经历坎坷,近期终于恢复制作
  9. 做一个功能比较齐全的小程序商城选择好的系统很重要
  10. 【Centos】sshd 无法启动(解决问题篇,附问题排查思路和解决方法)