reducer

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

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

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

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

  1. 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 方法的注解来帮助防止这种情况。

相关问题