есть моя программа:
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());
}
}
вопрос если я использую return new OddRange, как указано выше в классе Vprog , Я могу изменить vertexRDD
Но, если я использую retuen self , например:
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;
}
}
vertexRDD не изменился. Я знаю, что RDD неизменен, но как я могу обновить vectexRDD в spark.graphx.pregel правильно? Можете ли вы дать мне какой-либо совет?
Я нашел тот же вопрос: Spark Pregel не работает с Java Но я использую spark 2.3.0 , может быть, у него такая же проблема?