reduce函数包含操作

5rgfhyps  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(401)

下面的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
gzszwxb4

gzszwxb41#

如果我能正确理解你想
计算迭代器的长度
少于两个元素时不输出任何内容
否则写出所有结果
知道这一点-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);
}

或者,你可能对这个答案感兴趣

相关问题