郁闷的hadoop reduce不能运行

昨天在修改自己程序的时候运到一个问题,首先修改程序的原因是修改前的版本所有逻辑处理都在map中执行,没有用到reduce。后来觉得将一部分逻辑处理放在map,一部分让在reduce中。
在重写reduce方法后部署到集群中运行reduce方法体中代码不能运行,起初以为是job配置时写错了format。经过多次调整并确保格式没有任何问题,那问题到底在哪呢,我们看看重写的reduce方法:

这是我之前的reduce方法,输入输出都为Text,
public class ExtractorReducer extends Reducer<Text, Text, Text, Text>{
public void reduce(Text key, Iterator<Text> inValues, Context context) throws IOException {

}

后来在重写方法的前面加上@Override后就报错了。根据这个情况仔细看了下原来是Iterator错了,0.20.2改成了Iterable,而Iterator还是0.19的写法。

public class ExtractorReducer extends Reducer<Text, Text, Text, Text>{
@Override
public void reduce(Text key, Iterable<Text> inValues, Context context) throws IOException {


}

终于可以运行,给我提了个醒,如下:
1 要细心观察,看看那错了,不能大意。
2 重写方法前加上@Override,这个很有好处的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值