Die OutOfMemoryError erscheint, nachdem ich bfs nennen 20+ mal auf diese Weise:java.lang.OutOfMemoryError im Zusammenhang mit Funken Graphframe bfs
list_locals = []
#g is the graphframe with > 3 million nodes and > 15 million edges.
def fn(row):
arg1 = "id = '%s'" %row.arg1
arg2 = "id = '%s'" %row.arg2
results = g.bfs(arg1, arg2, maxPathLength = 4)
list_locals.append(results.rdd.collect())
results = None
# t is a list of row objects
for i in range(101):
fn(t[i])
print i
aus den Protokollen, kann ich sehen, dass bfs viele Broadcast-Variablen erstellt und versucht, um sie zu löschen. Ich frage mich, ob die Clearance von Broadcast-Variablen nicht vollständig ist? Ich habe die letzten Fehlermeldungen unten angehängt. Vielen Dank!
16/07/11 09:44:28 INFO storage.BlockManagerInfo: Removed broadcast_922_piece0 on dsg-cluster-server-s06.xxx:40047
im Speicher (Größe: 8,1 KB, gratis: 3,0 GB)
16/07/11 09:44:38 INFO storage.MemoryStore: Block broadcast_924 stored as values in memory (estimated size 24.4 KB, free 2.8 MB)
Exception in thread "dag-scheduler-event-loop" java.lang.OutOfMoryError: Java heap space
Danke für die Antwort. Aber der Treiberspeicher wurde auf 32G eingestellt, was mehr als genug sein sollte. . set ("spark.driver.memory", "16g") – Yiliang
Laufen Sie im Client-Modus (Standard), weil Sie im Client-Modus den Treiber-Speicher mit -driver-memory einstellen müssen, wenn Sie die Anwendung senden. – Dikei
Danke! Das Problem ist gelöst. Ich laufe im Client-Modus und setze den spark.driver.memory durch submit-Argument. – Yiliang