MapReduce API

2024 年 8 月 28 日 | 3 分钟阅读

在本节中,我们关注 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 类

Job 类用于配置作业并提交它。它还控制执行并查询状态。一旦作业被提交,set 方法将抛出 IllegalStateException。

Job 类的方法

方法描述
Counters getCounters()此方法用于获取作业的计数器。
long getFinishTime()此方法用于获取作业的完成时间。
Job getInstance()此方法用于生成一个没有任何集群的新 Job。
Job getInstance(Configuration conf)此方法用于生成一个没有任何集群并提供配置的新 Job。
Job getInstance(Configuration conf, String jobName)此方法用于生成一个没有任何集群并提供配置和作业名称的新 Job。
String getJobFile()此方法用于获取已提交作业配置的路径。
String getJobName()此方法用于获取用户指定的作业名称。
JobPriority getPriority()此方法用于获取作业的调度功能。
void setJarByClass(Class<?> c)此方法用于通过提供类名和 .class 扩展来设置 jar。
void setJobName(String name)此方法用于设置用户指定的作业名称。
void setMapOutputKeyClass(Class<?> class)此方法用于设置 map 输出数据的键类。
void setMapOutputValueClass(Class<?> class)此方法用于设置 map 输出数据的值类。
void setMapperClass(Class<? extends Mapper> class)此方法用于为作业设置 Mapper。
void setNumReduceTasks(int tasks)此方法用于设置作业的 reduce 任务数。
void setReducerClass(Class<? extends Reducer> class)此方法用于为作业设置 Reducer。
下一主题词频统计示例