Ich habe mit PySpark mit IPython in letzter Zeit auf meinem Server mit 24 CPUs und 32 GB RAM. Es läuft nur auf einer Maschine. In meinem Prozess möchte ich riesige Menge an Daten sammeln, wie unten Code geben ist:PySpark: java.lang.OutOfMemoryError: Java Heap-Speicher
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))
Als ich
tuntraining_data = train_dataRDD.collectAsMap()
Es gibt mir outOfMemory Fehler. Java heap Space
. Außerdem kann ich nach diesem Fehler keine Operationen auf Spark ausführen, da es die Verbindung mit Java verliert. Es gibt Py4JNetworkError: Cannot connect to the java server
.
Es sieht so aus, als wäre der Heap-Speicher klein. Wie kann ich größere Grenzen setzen?
EDIT:
Dinge, die ich vor der Ausführung versucht: sc._conf.set('spark.executor.memory','32g').set('spark.driver.memory','32g').set('spark.driver.maxResultsSize','0')
änderte ich die Funken Optionen gemäß der Dokumentation hier (wenn Sie ctrl-f tun und für spark.executor.extraJavaOptions suchen): http://spark.apache.org/docs/1.2.1/configuration.html
Es sagt, dass ich OOMs vermeiden kann, indem ich spark.executor.memory Option einstelle. Ich habe das Gleiche gemacht, aber es scheint nicht zu funktionieren.
Überprüfen Sie diese Frage http://stackoverflow.com/questions/21138751/spark-java-lang-outofmemoryerror-java-heap-space –
@bcaceiro: Ich sehe viele Funken Optionen in der Post gesetzt werden. Ich benutze keine Scala. Ich benutze IPython. Weißt du, ob ich diese Optionen innerhalb der Shell einstellen kann? – mousecoder
@bcaceiro: Aktualisierte die Frage mit dem Vorschlag aus dem Post, den du mir auch leiteteest. Es scheint, dass es ein Problem mit JVM gibt. – mousecoder