PySpark: java.lang.OutofMemoryError: Java heap space

J'ai été en utilisant PySpark avec Ipython dernièrement sur mon serveur avec 24 Processeurs et 32 go de RAM. Son fonctionnement sur une seule machine. Dans mon processus, je veux rassembler énorme quantité de données, c'est de donner dans le code ci-dessous:

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))

Quand je fais

training_data =  train_dataRDD.collectAsMap()

Il me donne l'Erreur outOfMemory. Java heap Space. Aussi, je ne peux pas effectuer d'opérations sur la Spark après cette erreur car il perd la connexion avec Java. Il donne Py4JNetworkError: Cannot connect to the java server.

Il ressemble à de la mémoire est faible. Comment puis-je le mettre à plus de limites?

MODIFIER:

Choses que j'ai essayé avant de l'exécuter:
sc._conf.set('spark.executor.memory','32g').set('spark.driver.memory','32g').set('spark.driver.maxResultsSize','0')

J'ai changé la bougie d'options selon les documents ici(si vous ne le faites ctrl-f et la recherche de l'étincelle.exécuteur testamentaire.extraJavaOptions) : http://spark.apache.org/docs/1.2.1/configuration.html

Il dit que je peux éviter OOMs par réglage de l'allumage.exécuteur testamentaire.option de mémoire. J'ai fait la même chose, mais il semble ne pas fonctionner.

Cochez cette question stackoverflow.com/questions/21138751/...
Je vois beaucoup de bougies d'options définies dans le post. Je ne l'utiliser à la scala. Je suis à l'aide de IPython. Savez-vous si je peux définir ces options à partir de l'intérieur de la coquille?
Mise à jour à la question de la suggestion de la part de la poste, que vous avez réalisé moi aussi. Il semble qu'il y est un problème avec la JVM.

OriginalL'auteur mousecoder | 2015-09-01

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *