Je suis nouveau dans scala / spark et en chargeant un fichier (csv) de taille 2 Go et cela fonctionne bien sur ma machine virtuelle avec une taille inférieure à HEAP_SIZE.
val lst: Array[String] = expRDD.map((c: tmpClass) => (c.objType, 0)) .reduceByKey((x: Int, y: Int) => 0) .map({ (t: Tuple2[String, Int]) => t._1 }) .collect
Mais lors de l'exécution du même code et en chargeant le même fichier sur IntelliJ, il lève une exception java.lang.StackOverflowError
.
Sachez que je ne configure pas correctement les options de mémoire sur IntelliJ.
Quelqu'un pourrait-il s'il vous plaît m'aider comment et où exactement je dois définir cela car j'ai suffisamment de mémoire sur ma machine Windows (32 Go)?
En traçant l'erreur, elle provient exactement du code ci-dessous et évidemment à collecter .
HEAP_SIZE="-Xms8g -Xmx8g"
3 Réponses :
Augmenter la taille de la pile peut aider. Vous pouvez spécifier -Xss4m
dans le champ VM Options de la configuration Exécuter / Déboguer correspondante. Cela définira la taille de la pile à 4M (la taille de la pile par défaut dépend du système d'exploitation et de la version JVM et est généralement inférieure à 1M). Notez que cela n'aidera pas si votre problème est causé par la récursion infinie.
Avez-vous essayé le champ Options VM de la configuration Exécuter / Déboguer utilisée pour démarrer votre application?
Mon mauvais c'est
java.lang.StackOverflowError
. Oui, j'ai essayéVM Options
en utilisantEdit Configuration
en donnant la même taille.Essayez d'ajouter
-Xss4m
dans les options de la VM. Si le problème persiste, il est probablement dû à une récursivité infinie et vous devrez partager l ' exemple minimal, complet et vérifiable pour obtenir Aidez-moi.Merci, cela a fonctionné. Pourriez-vous s'il vous plaît le mettre comme une réponse expliquant comment cela fonctionne afin que je puisse l'accepter?