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

Job对象指定了作业的各种参数.它授予你对整个作业如何运行的控制权.当我 们在 Hadoop 集群上运行这个作业时,我们把代码打包成一个 JAR 文件(Hadoop 会在集群分发这个包).我们没有明确指定 JAR 文件的名称,而是在 Job构造函数中传送一个类,Hadoop 会找到这个包含此类的 JAR 文件.

在创建 Job对象后,我们将指定输入和输出的路径.通过调用 FileInputFormat 内的静态方法 addInputPath()来定义输入的路径,它可以是单个 文件,目录(本例中,输入的内容组成此目录下所有文件)或文件模式的路径.同时, addInputPath()可被调用多次从而实现使用多路径输入.

输出路径(其中只有一个)是在 FileOutputFormat 内的静态方法 setOutputPath()来指定的.它指定了 reduce 函数输出文件写入的目录.在运行作业前该目录不应该存在,否则 Hadoop 会报错并且拒绝运行任务.这种预防措施是为了防止 数据丢失(一个长时间的任务可能非常恼人地被另一个意外覆盖).

接下来,通过 setMapperClass()和 setReducerClass()这两个方法来指定要使 用的 map 和 reduce 类型. setOutputKeyClass()和 setOutputValueClass()方法控制 map 和 reduce 函数的输出类型,正如本例所示,这两个方法往往是相同的.如果它们不同,那么 map 的输出类型可设置成使用 setMapOutputKeyClass()和 setMapOutputValueClass()方法.

输入的类型通过输入格式来控制,我们没有设置,因为我们使用的是默认的 TextInputFormat(文本输入格式).

在设置了定义 map 和 reduce 函数的类之后,运行作业的准备工作就算完成了. JobClient 内的静态方法 runJob()会提交作业并等待它完成,把进展情况写入控制台.

waitForCompletion()方法的返回值是一个布尔型true表示成功,false表示失败,即我们翻译成0或1程序的退出代码。

Application to find the maximum temperature in the weather dataset的更多相关文章

  1. hadoop-mongo map/reduce java

    官方 http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-hadoop/ mongo-haoop项目地址 https://g ...

  2. 【springboot】之Application配置

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...

  3. springBoot配置文件application.properties

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...

  4. spring-boot默认的application.properties属性

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...

  5. springboot成神之——application.properties所有可用属性

    application.properties所有可用属性 # =================================================================== # ...

  6. Spring Boot Common application properties(转载)

    转自官方文档:http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.h ...

  7. 【spring boot】application.properties官方完整文档【参考使用】

    官方地址: https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ 进入搜索: Appendice ...

  8. Spring boot application.properties 配置

    原文链接: http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.ht ...

  9. Architecture of Device I/O Drivers, Device Driver Design

    http://www.kalinskyassociates.com/Wpaper4.html Architecture of Device I/O Drivers Many embedded syst ...

随机推荐

  1. 深入理解maven与应用(二):灵活的构建

    深入理解maven及应用(一):生命周期和插件 參考官方url:http://maven.apache.org/guides/index.html 一个优秀的构建系统必须足够灵活,应该可以让项目在不同 ...

  2. clearcase常用命令

    版本控制工具学习 http://www.itpxpj.com/course.do?method=getAllCourseInFront&classTypeId=21 1.[ClearCase] ...

  3. 三篇IMO的文章

    http://column.iresearch.cn/b/201411/687499.shtml?from=singlemessage&isappinstalled=1 http://colu ...

  4. linux 控制台使用技巧

    1. 键盘无响应 可能是按下ctrl+s, 此时按下scroll即可解锁 2. 想看上一屏的信息 shift+pageup 3. 打印的信息和错误信息区分 普通信息, 用printf, cout打印的 ...

  5. static作用

    C程序一直由下列部分组成:      1)正文段——CPU运行的机器指令部分:一个程序仅仅有一个副本:仅仅读,防止程序因为意外事故而改动自身指令:      2)初始化数据段(数据段)——在程序中全部 ...

  6. HTTPS的学习

    HTTPS的学习总结   HTTPS学习总结 简述 HTTPS对比HTTP就多了一个安全层SSL/TLS,具体就是验证服务端的证书和对内容进行加密. 先来看看HTTP和HTTPS的区别 我用AFN访问 ...

  7. c#1所搭建的核心基础之委托

    本文将对c#1的委托进行详细探索 委托(delegate)   注 delegate:vt.委派代表; 授权给; [法律]债务转移;  委托作用:在恰当的时间执行一系列操作 1.简单委托的构成 声明委 ...

  8. jni 入门 android的C编程之旅 --->环境搭建&&helloworld

    需要进行jni的开发有一下几个条件: 1:能初步使用C/C++如果不会,请参读 谭浩强的  C编程语言 2:android应用开发已经基本入门,如果没有,请先行学习 这两个条件基本满足后,我们开始了: ...

  9. How to initialize a static const map in c++?

    #include <map> using namespace std; struct A{ static map<int,int> create_map() { map< ...

  10. Java中取某一个范围的随机数

    一.取模操作 public static void main(String[] args) { for (int i = 1; i <= 20; i++) { int j = i % 11; S ...