Hadoop MapReduce 类型和格式

Hadoop的MapReduce中,map函数和reduce函数遵循如下常规格式:
map(k1,v1)------->list(k2,v2)
reduce(k2,list(v2))------->list(k3,v3)
一般来说,map函数的键值类型(k1和v1)不同于输出类型(k2和v2)。然而reduce函数的输入类型必须和map函数的输出类型相同。但是reduce函数的输出类型(k3和v3)可以不同于输入类型。
Map函数

public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> {
  public abstract class Context
    implements MapContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT> {
  }
  protected void map(KEYIN key, VALUEIN value, 
                     Context context) throws IOException, InterruptedException {
    context.write((KEYOUT) key, (VALUEOUT) value);
  }
}

Reduce函数 

public class Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT> {
  public abstract class Context 
    implements ReduceContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT> {
  }
  protected void reduce(KEYIN key, Iterable<VALUEIN> values, Context context
                        ) throws IOException, InterruptedException {
    for(VALUEIN value: values) {
      context.write((KEYOUT) key, (VALUEOUT) value);
    }
  }
}

当我们在写MapReduce时,我们需要写一个类实现Map函数和Reduce函数,重写map方法和reduce方法
在Map类和Reduce类中,Context类对象用于输出键值对,因此他们通过输出类型参数化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值