wake-up-neo.net

PySpark: Java.lang.OutofMemoryError: Java-Heap-Speicherplatz

Ich habe PySpark mit Ipython in letzter Zeit auf meinem Server mit 24 CPUs und 32 GB RAM verwendet. Es läuft nur auf einer Maschine. In meinem Prozess möchte ich eine riesige Datenmenge sammeln, wie im Code angegeben:

train_dataRDD = (train.map(lambda x:getTagsAndText(x))
.filter(lambda x:x[-1]!=[])
.flatMap(lambda (x,text,tags): [(tag,(x,text)) for tag in tags])
.groupByKey()
.mapValues(list))

Wenn ich tue 

training_data =  train_dataRDD.collectAsMap()

Es gibt mir outOfMemory Error. Java heap Space. Außerdem kann ich nach diesem Fehler keine Operationen mit Spark ausführen, da die Verbindung zu Java unterbrochen wird. Es gibt Py4JNetworkError: Cannot connect to the Java server.

Es sieht so aus, als sei der Heap-Speicherplatz klein. Wie kann ich größere Grenzen setzen? 

EDIT:

Dinge, die ich vor dem Ausführen ausprobiert habe: sc._conf.set('spark.executor.memory','32g').set('spark.driver.memory','32g').set('spark.driver.maxResultsSize','0')

Ich habe die Funkenoptionen gemäß der Dokumentation hier geändert (wenn Sie Strg-F verwenden und nach spark.executor.extraJavaOptions suchen): http://spark.Apache.org/docs/1.2.1/configuration.html

Es besagt, dass ich OOMs vermeiden kann, indem ich die spark.executor.memory -Option setze. Ich tat dasselbe, aber es scheint nicht zu funktionieren.

25
pg2455

Nach dem Ausprobieren vieler Konfigurationsparameter stellte ich fest, dass nur eine Änderung erforderlich ist, um mehr Heap-Speicherplatz und d. H. spark.driver.memory zu ermöglichen. 

Sudo vim $SPARK_HOME/conf/spark-defaults.conf
#uncomment the spark.driver.memory and change it according to your use. I changed it to below
spark.driver.memory 15g
# press : and then wq! to exit vim editor

Schließen Sie Ihre vorhandene Funkenanwendung und führen Sie sie erneut aus. Sie werden diesen Fehler nicht mehr feststellen. :)

36
pg2455

Ich hatte das gleiche Problem mit pyspark (installiert mit brew). In meinem Fall wurde es auf dem Pfad /usr/local/Cellar/Apache-spark installiert.

Die einzige Konfigurationsdatei, die ich hatte, war in Apache-spark/2.4.0/libexec/python//test_coverage/conf/spark-defaults.conf.

Wie vorgeschlagen hier habe ich die Datei spark-defaults.conf im Pfad /usr/local/Cellar/Apache-spark/2.4.0/libexec/conf/spark-defaults.conf angelegt und die Zeile spark.driver.memory 12g angehängt.

0
Francesco Boi