Hadoop应用系列2--MapReduce原理浅析(上)
我们以《Hadoop权威指南》这本书上的例子,来分析一下,MapReduce是如何工作的。
我们引用它分析气温的例子。这个例子还是非常经典的,我个人认为小缺点就是,没有对传统的程序是如何工作的进行对比,如果加入此项,它将是一个完美的东西,现在就让我们,来完美它。
手写我们写一段Java程序,实现相同的功能<分析1901年和1902年最高气温>,当然程序略加改动就可以分析最低气温,在改动一下,就可以高和低同时出现,废话了,呵呵。
这里需要使用气温的数据, 我会提供下载链接。
我们提出一行数据,看看,年份在哪里
0029029070999991901010106004+64333+023450FM-12+000599999V0202701N015919999999N0000001N9-00781+99999102001ADDGF108991999999999999999999
我们引用它分析气温的例子。这个例子还是非常经典的,我个人认为小缺点就是,没有对传统的程序是如何工作的进行对比,如果加入此项,它将是一个完美的东西,现在就让我们,来完美它。
手写我们写一段Java程序,实现相同的功能<分析1901年和1902年最高气温>,当然程序略加改动就可以分析最低气温,在改动一下,就可以高和低同时出现,废话了,呵呵。
这里需要使用气温的数据, 我会提供下载链接。
我们提出一行数据,看看,年份在哪里
0029029070999991901010106004+64333+023450FM-12+000599999V0202701N015919999999N0000001N9-00781+99999102001ADDGF108991999999999999999999
- package org.pcwl;
- /**
- * @author QQ:81739279 e-mail: project_maker@sina.com
- * 需要的基本知识 java.lang.String API
- * 本段程序的目的是找到我们要使用的数据在什么地方
- * 注意: NCDC的气温数据精确到小数点后1为
- */
- public class MaxTemperatureReady {
- /** 在1901年数据中,复制出来第一行,用于寻找年份、气温 */
- private static final String data = "0029029070999991901010106004+64333+023450FM-12+000599999V0202701N015919999999N0000001N9-00781+99999102001ADDGF108991999999999999999999";
- public static void main(String[] args) {
- // 显示年份 运行结果 15 ,我们需要4为,至19
- System.out.println(data.indexOf("1901"));
- // 气温,是一个数字,有正数和负数, 在字符串中,找看看,+/-在哪里 , 以确定截取区域
- // 在这里我没发现 有 +64333+025450FM-12+000599999V020........N9-00781+
- // 结论, N0000001N9至+这个位置之间是气温, 找他的位置
- // 运行结果 77 加上这10位,结果为87 , 如果低87为是+不需要 下一个符号+ 之前是5为
- System.out.println(data.indexOf("N0000001N9"));
- // 找一条看看
- String fmt = "%s年%d度";
- // 注意:不含92 也就是 这里能娶到-0078 零下7.8的意思, 如果零下78.1冻死人诶~~~
- System.out.println(String.format(fmt, data.substring(15,19), Integer.parseInt(data.substring(87, 92)) ));
- // 好了, 数据如何提取我们已经知道了.
- }
- }