有我的程序:
static class Vprog extends AbstractFunction3< Object, OddRange, OddRange, OddRange> implements Serializable {
@Override
public OddRange apply(Object l, OddRange self, OddRange sumOdd) {
System.out.println(self.getS()+self.getI()+" ---> "+sumOdd.getS()+sumOdd.getI());
self.setS(sumOdd.getS() + self.getS());
self.setI(self.getI() + sumOdd.getI());
return new OddRange(self.getS(), self.getI());
}
}
问题是如果我在Vprog类中使用像上面那样返回新的OddRange,我可以更改vertexRDD]>
但是,如果我使用retuen self,例如:
我知道RDD是不可变的,但是如何正确更新spark.graphx.pregel中的vectexRDD?您能给我任何建议吗?static class Vprog extends AbstractFunction3< Object, OddRange, OddRange, OddRange> implements Serializable { @Override public OddRange apply(Object l, OddRange self, OddRange sumOdd) { System.out.println(self.getS()+self.getI()+" ---> "+sumOdd.getS()+sumOdd.getI()); self.setS(sumOdd.getS() + self.getS()); self.setI(self.getI() + sumOdd.getI()); return self; } }
vectex不变。
我发现了相同的问题:Spark Pregel is not working with Java但是我使用spark 2.3.0,也许有同样的问题?
有我的程序:静态类Vprog扩展AbstractFunction3
我想我已经找到了答案:如果我们想更改将在Vprog中的下一个sendMsg中使用的日期,我们必须返回一个新的日期。