Hadoop实践(四)---MR作业配置

本文详细介绍了Hadoop MapReduce作业配置的各个方面,包括如何向作业传递定制参数,查看任务特定信息,如何划分多个输出文件,以数据库作为输入输出以及保持输出顺序的方法。讲解了MultipleOutputFormat和MultipleOutputs的使用,以及DBOutputFormat与Partitioner在保持输出顺序中的作用。通过这些技巧,可以更灵活地管理和优化MR作业。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、向作业传递定制的参数

Hadoop自身使用一个配置对象类存储所有作业的配置属性,也可以使用这个对象将参数传递到Mapper和Reducer

  1. MR的driver类通过属性来配置JobConf对象,这些属性包括输入格式,输出格式,Mapper类等。如果要引入自定义的属性,需要在这个配置对象中给属性一个唯一的名称并设置它的值。
  2. 这个配置对象会被传递到所有的TaskTracker(AM),然后作业中的所有任务就能够看到配置对象中的属性
  3. Mapper和Reducer就可以通过读取该配置对象并获得它的属性值

Configuration类(JonConf的父类)有许多通用的setter方法,属性采用键值对的形式,键必须是string,而值可以是常用类型的任意一个。

常用的setter方法:

  public void set(String name,String value)
  public void setBoolean(String name, boolean value)
  public void setInt(String name, int value)
  public void setLong(String name, long value)
  public void setStrings(String name, String... values)

常用的getter方法:

 public String get(String name)
 public String get(String name, String defaultValue)
 public boolean getBoolean(String name, boolean defaultValue)
 public float getFloat(String name, float defaultValue)
 public int getInt(String name, int defaultValue)
 public long getLong(String name, long defaultValue)
 public String getBoolean(String name, String... defaultValue)

Tips:在Hadoop内部,所有的属性都存为字符串

  1. driver类首选设置配置对象的属性,让它们在所有的任务中可见
  2. Mapper和Reducer可以访问Configure()方法中的配置对象
  3. 任务初始化时会调用configure(),它已经被重写为可以提取和存储设置的属性
  4. map和reduce方法访问这些属性的副本
package MR;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.*;

import java.io.IOException;
import java.util.Iterator;

/**
 * Created by Promacanthus on 2017/6/29.
 */
public class tample {
   
    public int run(String[] args)throws Exception{
        Configuration conf = new Configuration();
        JobConf job = new JobConf(conf);
        job.setInt("myjob.property",Integer.parseInt(args[2]));
        JobClient.runJob(job);
        return 0;
    }
    public static class MapClass extends MapReduceBase implements Mapper<Text,Text,Text,Text>{
   
        int myproperty;
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值