数据集迭代返回不同的结果以进行不同的执行。有时,结果的大小与打印的输出值不匹配。
我不能在这里共享完整的代码,但是如果有人想看一下,我可以直接分享。
编辑1:
BiscuitFresh 的答案修复了不匹配的大小和迭代值问题。但是我是仍然面临与相同输入的不同运行获得不同结果的实际问题。
DataSet<Tuple5<Integer,Integer,Integer,Integer,Boolean>> finalVals = iterativeDataSet.closeWith(finalAlive);
try {
int size = finalVals.collect().size();
finalVals.collect().forEach(val-> System.out.printf("row %d, col %d neighbors %d alive? %bn",val.f1,val.f2,val.f3,val.f4));
return size;
} catch (Exception e) {
e.printStackTrace();
}
上述代码有时比返回的大小要少的值,有时比返回的大小要多。关于为什么会发生的任何线索?
编辑2:确定了我的代码中的错误以获取不同的结果。这是在其中一个映射器中重置的旗帜。接受 biscuitfresh 在发布的代码段中指出问题。
尝试仅调用finalVals.collect()
一次,以确保您肯定正在处理同一集合(尚未更改(。然后,您应该得到匹配的结果。