MapReduce API
在这个部分中,我们关注MapReduce API。在这里,我们学习MapReduce编程中使用的类和方法。
MapReduce Mapper类
在MapReduce中,Mapper类的作用是将输入的键值对映射到一组中间键值对。它将输入记录转换为中间记录。
这些与给定输出键相关联的中间记录将传递给Reducer以产生最终输出。
Mapper类的方法
方法 | 描述 |
---|---|
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作业类
作业类用于配置作业并提交。它还控制着执行和查询状态。一旦作业被提交,set方法会抛出IllegalStateException。
作业类的方法
方法 | 描述 |
---|---|
Counters getCounters() |
用于获取作业的计数器。 |
long getFinishTime() |
用于获取作业的完成时间。 |
Job getInstance() |
用于生成一个新的作业,没有任何集群。 |
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) |
用于设置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。 |