2
votes

java.lang.StackOverflowError sur IntelliJ

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"


4 commentaires

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 utilisant Edit 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?


3 Réponses :


3
votes

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.


0 commentaires

1
votes

Si vous utilisez le serveur de compilation Scala, les options JVM sont ici:

Construction, exécution, déploiement> Compilateur> Compilateur Scala> Serveur de compilation Scala

(vous devrez peut-être redémarrer IntelliJ pour appliquer cela)

 Options IntelliJ JVM

les crédits vont à @CrazyCoder


0 commentaires

0
votes

 Ceci a résolu mon problème

Parfois, il est préférable d'ajouter plus de taille de tas comme 4096 et les options JVM -server -Xss256m


0 commentaires