首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

忧闷的hadoop reduce不能运行

2012-10-28 
郁闷的hadoop reduce不能运行昨天在修改自己程序的时候运到一个问题,首先修改程序的原因是修改前的版本所

郁闷的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,这个很有好处的。

热点排行