Wie kann der Wert in Spark's RDD effizient aktualisiert werden?

Ich schreibe ein grafisches Programm inScala mitSpark. Das Dataset hat 4 Millionen Knoten und 4 Millionen Kanten (Sie können dies als Baum behandeln), aber für jedes Mal (anIteration) Bearbeite ich nur einen Teil davon, nämlich einen Teilbaum, der durch einen bestimmten Knoten verwurzelt ist, und die Knoten in einem Pfad zwischen diesem bestimmten Knoten und dem Stamm.

DasIteration hat Abhängigkeit, was bedeuteti+1 Iteration braucht das Ergebnis voni. Also muss ich das Ergebnis von jedem speichernIteration für den nächsten Schritt.

Ich versuche, eine effiziente Möglichkeit zum Aktualisieren zu findenRDD, aber ich habe noch keine AhnungPairRDD haben einelookup Funktion, die die Rechenzeit von reduzieren könnteO(N), zu(M),N bezeichnen die Gesamtzahl der Objekte inRDD undM bezeichnen die Anzahl der Elemente in jeder Partition.

Ich denke also, es gibt sowieso, dass ich ein Objekt im aktualisieren könnteRDD mitO(M)? Oder im Idealfall, O (1)? (Ich sehe eine E-Mail in Spark's Mailingliste, die besagt, dass dielookup kann modifiziert werden, um O (1) zu erreichen)

Eine andere Sache ist, wenn ich erreichen könnteO(M) zur Aktualisierung derRDDKann ich die Partition auf eine größere Anzahl als die Anzahl der Kerne erhöhen und eine bessere Leistung erzielen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage