Nous obtenons l'erreur suivante après l'exécution de "pio train". Il fonctionne environ 20 minutes et échoue sur la scène 26.Prediction.io - pio train échoue avec OutOfMemoryError
[ERROR] [Executor] Exception in task 0.0 in stage 1.0 (TID 3)
[ERROR] [SparkUncaughtExceptionHandler] Uncaught exception in thread Thread[Executor task launch worker-0,5,main]
[ERROR] [SparkUncaughtExceptionHandler] Uncaught exception in thread Thread[Executor task launch worker-4,5,main]
[WARN] [TaskSetManager] Lost task 2.0 in stage 1.0 (TID 5, localhost): java.lang.OutOfMemoryError: Java heap space
at com.esotericsoftware.kryo.io.Output.<init>(Output.java:35)
at org.apache.spark.serializer.KryoSerializer.newKryoOutput(KryoSerializer.scala:80)
at org.apache.spark.serializer.KryoSerializerInstance.output$lzycompute(KryoSerializer.scala:289)
at org.apache.spark.serializer.KryoSerializerInstance.output(KryoSerializer.scala:289)
at org.apache.spark.serializer.KryoSerializerInstance.serialize(KryoSerializer.scala:293)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:239)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Notre serveur a sur la mémoire de 30 Go, mais environ 10 Go est prise par HBase + ElasticSearch.
Nous essayons de traiter environ 20 millions d'enregistrements créés par Universal Recommender.
J'ai essayé la commande suivante pour augmenter la mémoire exécuteur testamentaire/pilote, mais il n'a pas aidé:
pio train -- --driver-memory 6g --executor-memory 8g
Quelles sont les options nous essayons de résoudre le problème? Est-il possible de traiter cette quantité d'événements sur le serveur avec cette quantité de mémoire?