天天看点

使用Hadoop分析数据——简单案例java语言编程之MaxTemperature

 为了充分发挥Hadoop提供的并行处理优势,我们需要将查询表示成MapReduce作业。经过一些本地的小规模测试,我们将能够在集群设备上运行Hadoop。

  Map阶段和reduce阶段

  

 MapReduce任务过程被分为两个处理阶段:map阶段和reduce阶段。每个阶段都以键/值对作为输入和输出,并由程序员选择他们的类型。程序员还需要具体定义两个函数:map函数和reduce函数。

 

 map阶段的输入是原始的数据(从NCDC获取)。我们选择文本格式作为输入格式,以便将数据集的每一行作为一个文本值进行输入。键为该行起始位置相对于文件其实位置的偏移量,但是我们不需要这个信息,忽略。

 我们要的map函数很简答。由于我们只对年份和气温这两个属性感兴趣,所以只需要取出这两个属性数据。在本例中,map函数只是一个数据准备阶段,通过这种方式来准备数据,是reduce函数能在该准备数据上继续处理:即找出每年的最高气温。

 为了全面了解map的工作方式,我们思考一下几行作为输入数据的示例数据:

 

0067011990999991950051507004…9999999N9+00001+99999…

0043011990999991950051512004…9999999N9+00221+99999…

0043011990999991950051518004…9999999N9-00111+999999…

0043012650999991949032412004…0500001N9&#