reduce 函数包含操作
reduce function contains operations
下面的reduce函数包含在Hadoop中的操作错误,谁能告诉我问题是什么以及解决这个问题的任何解决方案?
伪代码如下:
Algorithm:reduce(String key, Iterator values)
int numDocs = 0
for all v in values do
numDocs += v;
end for
if numDocs < 2 then
return none
end if
for all v in values do
Emit(key,res)
end for
如果我正确理解您正在尝试
- 计算迭代器的长度
- 当元素少于两个时不输出任何内容
- 否则写出所有结果
知道这一点 - Java 迭代器的契约声明它只能被消耗一次,并且没有 "reset" 函数
您必须存储结果,例如
List docs = new ArrayList();
int numDocs = 0;
for (; values.hasNext(); numDocs++) {
docs.add(values.next());
}
if (numDocs < 2) {
return;
}
for (Object v : docs) {
context.write(key,v);
}
或者,you might be interested in this answer
下面的reduce函数包含在Hadoop中的操作错误,谁能告诉我问题是什么以及解决这个问题的任何解决方案?
伪代码如下:
Algorithm:reduce(String key, Iterator values)
int numDocs = 0
for all v in values do
numDocs += v;
end for
if numDocs < 2 then
return none
end if
for all v in values do
Emit(key,res)
end for
如果我正确理解您正在尝试
- 计算迭代器的长度
- 当元素少于两个时不输出任何内容
- 否则写出所有结果
知道这一点 - Java 迭代器的契约声明它只能被消耗一次,并且没有 "reset" 函数
您必须存储结果,例如
List docs = new ArrayList();
int numDocs = 0;
for (; values.hasNext(); numDocs++) {
docs.add(values.next());
}
if (numDocs < 2) {
return;
}
for (Object v : docs) {
context.write(key,v);
}
或者,you might be interested in this answer