在本章中,我们将仔细研究MapReduce编程操作中涉及的类及其方法.我们将主要关注以下内容;
JobContext接口
作业类
Mapper类
Reducer类
JobContext接口
JobContext接口是所有类的超级接口,它定义了MapReduce中的不同作业.它为您提供了在任务运行时提供给作业的只读视图.
以下是JobContext接口的子接口.
S.No. | 子接口描述 |
---|---|
1. | MapContext< KEYIN,VALUEIN,KEYOUT,VALUEOUT> 定义给予Mapper的上下文. |
2. | ReduceContext< KEYIN,VALUEIN,KEYOUT,VALUEOUT> 定义传递给Reducer的上下文. |
Job类是实现JobContext接口的主类.
Job Class
Job类是MapReduce API中最重要的类.它允许用户配置作业,提交作业,控制其执行以及查询状态. set方法只在提交作业之前有效,之后它们会抛出IllegalStateException.
通常,用户创建应用程序,描述作业的各个方面,然后提交作业
以下是如何提交工作的示例 :
// Create a new JobJob job = new Job(new Configuration());job.setJarByClass(MyJob.class);// Specify various job-specific parametersjob.setJobName("myjob");job.setInputPath(new Path("in"));job.setOutputPath(new Path("out"));job.setMapperClass(MyJob.MyMapper.class);job.setReducerClass(MyJob.MyReducer.class);// Submit the job, then poll for progress until the job is completejob.waitForCompletion(true);
构造函数
以下是Job类的构造函数摘要.
S.No | Constructor Summary |
---|---|
1 | Job() |
2 | Job(Configuration conf) |
3 | Job(Configuration conf, String jobName) |
方法
Job类的一些重要方法如下 :
S.No | 方法描述 |
---|---|
1 | getJobName() 用户指定的作业名称. |
2 | getJobState() 返回作业的当前状态. |
3 | isComplete() 检查作业是否为fini是不是. |
4 | setInputFormatClass () 设置作业的InputFormat. |
5 | setJobName(String name) 设置用户指定的作业名称. |
6 | setOutputFormatClass() 设置作业的输出格式. |
7 | setMapperClass(Class) 设置作业的Mapper. |
8 | setReducerClass(Class) 设置作业的Reducer. |
9 | setPartitionerClass(Class) 设置作业的分区程序. |
10 | setCombinerClass(Class) 设置作业的Combiner. |
Mapper类
Mapper类定义Map作业.将输入键值对映射到一组中间键值对.映射是将输入记录转换为中间记录的各个任务.转换后的中间记录不必与输入记录的类型相同.给定的输入对可以映射到零个或多个输出对.
方法
地图是最突出的方法Mapper类.语法定义如下 :
map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)
对于输入拆分中的每个键值对,都会调用此方法一次.
Reducer Class
Reducer类定义MapReduce中的Reduce作业.它将一组中间值与一组较小的值共享一个键. Reducer实现可以通过JobContext.getConfiguration()方法访问作业的Configuration.减速机有三个主要阶段和减号;随机,排序和减少.
随机播放 : Reducer使用网络上的HTTP复制每个Mapper的排序输出.
排序 : 框架通过键合并排序Reducer输入(因为不同的Mapper可能输出相同的键).随机和排序阶段同时发生,即在提取输出时,它们被合并.
减少 : 在此阶段,为每个< key,(值集合)>调用reduce(Object,Iterable,Context)方法.在已排序的输入中.
方法
reduce 是Reducer类最突出的方法.语法在下面和下面定义;
reduce(KEYIN key, Iterablevalues, org.apache.hadoop.mapreduce.Reducer.Context context)
对于键值对集合中的每个键,都会调用一次此方法.