Hadoop应用系列2--MapReduce原理浅析(上)

我们以《Hadoop权威指南》这本书上的例子,来分析一下,MapReduce是如何工作的。
我们引用它分析气温的例子。这个例子还是非常经典的,我个人认为小缺点就是,没有对传统的程序是如何工作的进行对比,如果加入此项,它将是一个完美的东西,现在就让我们,来完美它。

手写我们写一段Java程序,实现相同的功能<分析1901年和1902年最高气温>,当然程序略加改动就可以分析最低气温,在改动一下,就可以高和低同时出现,废话了,呵呵。

这里需要使用气温的数据, 我会提供下载链接。

我们提出一行数据,看看,年份在哪里

0029029070999991901010106004+64333+023450FM-12+000599999V0202701N015919999999N0000001N9-00781+99999102001ADDGF108991999999999999999999
Java代码 复制代码 收藏代码
  1. package org.pcwl;
  2. /**
  3. * @author QQ:81739279 e-mail: project_maker@sina.com
  4. * 需要的基本知识 java.lang.String API
  5. * 本段程序的目的是找到我们要使用的数据在什么地方
  6. * 注意: NCDC的气温数据精确到小数点后1为
  7. */
  8. public class MaxTemperatureReady {
  9. /** 在1901年数据中,复制出来第一行,用于寻找年份、气温 */
  10. private static final String data = "0029029070999991901010106004+64333+023450FM-12+000599999V0202701N015919999999N0000001N9-00781+99999102001ADDGF108991999999999999999999";
  11. public static void main(String[] args) {
  12. // 显示年份 运行结果 15 ,我们需要4为,至19
  13. System.out.println(data.indexOf("1901"));
  14. // 气温,是一个数字,有正数和负数, 在字符串中,找看看,+/-在哪里 , 以确定截取区域
  15. // 在这里我没发现 有 +64333+025450FM-12+000599999V020........N9-00781+
  16. // 结论, N0000001N9至+这个位置之间是气温, 找他的位置
  17. // 运行结果 77 加上这10位,结果为87 , 如果低87为是+不需要 下一个符号+ 之前是5为
  18. System.out.println(data.indexOf("N0000001N9"));
  19. // 找一条看看
  20. String fmt = "%s年%d度";
  21. // 注意:不含92 也就是 这里能娶到-0078 零下7.8的意思, 如果零下78.1冻死人诶~~~
  22. System.out.println(String.format(fmt, data.substring(15,19), Integer.parseInt(data.substring(87, 92)) ));
  23. // 好了, 数据如何提取我们已经知道了.
  24. }
  25. }


posted on 2013-02-10 19:02  蜜雪薇琪  阅读(206)  评论(0编辑  收藏  举报