Spark: PageRank Beispiel, wenn Iteration zu groß throws stackoverflowError

8

Ich teste das funke default PageRank-Beispiel und setze die Iteration auf 1024, dann stößt es stackoverflowerror. Ich habe auch dieses Problem in meinem anderen Programm getroffen. Wie kann ich es lösen.

%Vor%

Ich poste den Fehler hier.

%Vor%     
user3405300 11.03.2014, 09:16
quelle

2 Antworten

3

Es liegt daran, dass diese Transformationen in der for-Schleife sehr lange Abhängigkeiten in Ihrer rdd erzeugen. Wenn Sie versuchen, Ihren Spark-Job auszuführen, würde der rekursive Besuch auf Ihrer RDD Stackoverflow-Fehler verursachen.

Um dieses Problem zu lösen, können Sie checkpoint() auf Ihrer rdd verwenden. cache() würde dir nicht helfen, deine rdd sofort auszuwerten.

Sie sollten daher cache() und checkpoint() nach bestimmten Iterationen auf Ihrer Zwischen-rdd aufrufen und sie manuell auswerten, um ihre Abhängigkeiten zu löschen.

    
viirya 14.07.2014 14:01
quelle
0

Ich schätze, der Fehler tritt auf, weil Zwischen-RDDs erst nach collect() ausgewertet werden. Und beim Sammeln werden sie rekursiv ausgewertet.

Versuchen Sie cache() hinzuzufügen, um RDDs bei jeder Iteration auszuwerten, es wird wahrscheinlich helfen:

%Vor%     
Wildfire 12.03.2014 09:58
quelle