MapReduce API
在本节中,我们重点介绍MapReduce API。在这里,我们了解MapReduce编程中使用的类和方法。
MapReduce Mapper类
在MapReduce中,Mapper类的作用是将输入键值对映射到一组中间键值对。它将输入记录转换为中间记录。
这些与给定输出键关联的中间记录,并传递给Reducer以获得最终输出。
Mapper类的方法
void cleanup(Context context) |
此方法在任务结束时仅调用一次。 |
void map(KEYIN key, VALUEIN value, Context context) |
对于输入拆分中的每个键值,只能调用一次此方法。 |
void run(Context context) |
可以重写此方法以控制Mapper的执行。 |
void setup(Context context) |
此方法在任务开始时仅调用一次。 |
MapReduce Reducer类
在MapReduce中,Reducer类的作用是减少中间值的集合。它的实现可以通过JobContext.getConfiguration()方法访问作业的配置。
Reducer类的方法
void cleanup(Context context) |
此方法在任务结束时仅调用一次。 |
void map(KEYIN key, Iterable<VALUEIN> values, Context context) |
此方法仅对每个键调用一次。 |
void run(Context context) |
此方法可用于控制Reducer的任务。 |
void setup(Context context) |
此方法在任务开始时仅调用一次。 |
MapReduce作业类
Job类用于配置作业并提交。它还控制执行和查询状态。提交作业后,set方法将引发IllegalStateException。
作业类的方法
方法 |
说明 |
Counters getCounters() |
此方法用于获取作业的计数器。 |
long getFinishTime() |
此方法用于获取作业的完成时间。 |
Job getInstance() |
此方法用于生成没有任何群集的新Job。 |
Job getInstance(Configuration conf) |
此方法用于在没有任何群集和提供的配置的情况下生成新作业。 |
Job getInstance(Configuration conf, String jobName) |
此方法用于生成没有任何群集以及提供的配置和作业名称的新作业。 |
String getJobFile() |
此方法用于获取提交的作业配置的路径。 |
String getJobName() |
此方法用于获取用户指定的作业名称。 |
JobPriority getPriority() |
此方法用于获取作业的调度功能。 |
void setJarByClass(Class <?> c) |
此方法用于通过为类名提供.class扩展名来设置jar。 |
void setJobName(String name) |
此方法用于设置用户指定的作业名称。 |
void setMapOutputKeyClass(Class <?> class) |
此方法用于设置地图输出数据的键类。 |
void setMapOutputValueClass(Class <?> class) |
此方法用于设置地图输出数据的值类别。 |
void setMapperClass(Class <?extends Mapper> class) |
此方法用于设置作业的映射器。 |
void setNumReduceTasks(int tasks) |
此方法用于设置作业的缩减任务数量 |
void setReducerClass(Class <?extended Reducer> class) |
此方法用于设置作业的减速器。 |