📅  最后修改于: 2020-11-30 05:29:44             🧑  作者: Mango
在本章中,我们将仔细研究MapReduce编程操作中涉及的类及其方法。我们将主要专注于以下方面-
JobContext接口是所有类的超级接口,它们在MapReduce中定义了不同的作业。它为您提供了任务运行时提供给该任务的只读视图。
以下是JobContext接口的子接口。
S.No. | Subinterface Description |
---|---|
1. | MapContext Defines the context that is given to the Mapper. |
2. | ReduceContext Defines the context that is passed to the Reducer. |
Job类是实现JobContext接口的主要类。
Job类是MapReduce API中最重要的类。它允许用户配置作业,提交作业,控制其执行以及查询状态。 set方法仅在提交作业之前起作用,之后它们将引发IllegalStateException。
通常,用户创建应用程序,描述作业的各个方面,然后提交作业并监视其进度。
这是一个如何提交工作的例子-
// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);
// Specify various job-specific parameters
job.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 complete
job.waitForCompletion(true);
以下是Job类的构造函数摘要。
S.No | Constructor Summary |
---|---|
1 | Job() |
2 | Job(Configuration conf) |
3 | Job(Configuration conf, String jobName) |
Job类的一些重要方法如下-
S.No | Method Description |
---|---|
1 | getJobName()
User-specified job name. |
2 | getJobState()
Returns the current state of the Job. |
3 | isComplete()
Checks if the job is finished or not. |
4 | setInputFormatClass()
Sets the InputFormat for the job. |
5 | setJobName(String name)
Sets the user-specified job name. |
6 | setOutputFormatClass()
Sets the Output Format for the job. |
7 | setMapperClass(Class)
Sets the Mapper for the job. |
8 | setReducerClass(Class)
Sets the Reducer for the job. |
9 | setPartitionerClass(Class)
Sets the Partitioner for the job. |
10 | setCombinerClass(Class)
Sets the Combiner for the job. |
Mapper类定义Map作业。将输入键值对映射到一组中间键值对。映射是将输入记录转换为中间记录的单个任务。转换后的中间记录不必与输入记录具有相同的类型。给定的输入对可能映射为零或许多输出对。
map是Mapper类中最突出的方法。语法定义如下-
map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)
对于输入拆分中的每个键值对,都会调用一次此方法。
Reducer类在MapReduce中定义Reduce作业。它将一组共享密钥的中间值减少到较小的一组值。 Reducer实现可以通过JobContext.getConfiguration()方法访问作业的Configuration。 Reducer具有三个主要阶段-随机,排序和缩减。
随机播放-Reducer使用HTTP通过网络从每个Mapper复制排序的输出。
排序-框架按键合并对Reducer输入的排序(因为不同的Mappers可能输出相同的键)。混洗和排序阶段同时发生,即,在获取输出的同时,将它们合并。
Reduce-在此阶段,对排序后的输入中的每个<键((值的集合)>)调用reduce(对象,可迭代,上下文)方法。
reduce是Reducer类中最突出的方法。语法定义如下-
reduce(KEYIN key, Iterable values, org.apache.hadoop.mapreduce.Reducer.Context context)
对于键值对集合上的每个键,都将调用此方法一次。