reducer

hmae6n7t  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(440)

我在hadoop中有一个reducer,代码如下:

public void reduce(Text key, Iterator<Text> values, Context context) throws IOException, InterruptedException {
/*some code*/
String followers = ""; 
  while(values.hasNext()){
        followers = followers + values.next().toString() + ",";
  }
/*some code*/
}

我想为某个节点创建一个追随者列表,但当我运行它时,我得到了以下结果:

Error: java.lang.ArrayIndexOutOfBoundsException: 1

如果值是iterable类型,那么我没有问题,但是为什么会发生这种情况?
提前谢谢。

jjjwad0x

jjjwad0x1#

如果你要延长 org.apache.hadoop.mapreduce.Reducer (java文档)您用于 reduce() 不正确。当你实施 reduce() 方法,则重写reduce类中的实现。
您有: reduce(Text key, Iterator<Text> values, Context context) 应该是: reduce(Text key, Iterable<Text> values, Context context) 请注意 Iterator 以及 Iterable . 这可能意味着您的reduce实际上没有被调用。
您可以添加 @Override 方法的注解来帮助防止这种情况。

相关问题