【发布时间】:2016-11-04 09:06:04
【问题描述】:
我在 hadoop 中有一个减速器,代码如下:
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
如果 values 是 Iterable 类型,那么我没有问题,但为什么会发生这种情况?
提前致谢。
【问题讨论】:
-
我猜你打的是max string length,但我不知道迭代器中有多少值/值有多大
-
我正在尝试一个非常小的输入,所以我认为我没有达到最大字符串长度。
-
不是你的问题的答案,而是几点:1)你可以做
followers += values...2)你可以做...values.next() + ",";,因为toString()被隐式调用3)你通常应该在循环中连接字符串时使用StringBuilder。 -
感谢您的提示 :)
标签: java hadoop iterator iterable