pio train
(成功pio build
之后)给我这样的错误:
[ERROR] [Executor] Exception in task 0.0 in stage 39.0 (TID 34)
[WARN] [TaskSetManager] Lost task 0.0 in stage 39.0 (TID 34, localhost): java.lang.StackOverflowError
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2321)
at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2614)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2624)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1321)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
at scala.collection.immutable.$colon$colon.readObject(List.scala:362)
at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942)
从这里开始,ObjectInputStreams等或多或少重复执行直到堆栈已满。
有人暗示这可能是什么或如何调试吗?
注意::我正在docker容器中运行prediction.io,这可能会导致问题,但是再次:我真的不知道如何从那里继续。
任何帮助,我们都感激不尽。
PS:我使用
SPARK_DAEMON_JAVA_OPTS="-Xss=9m"
增加了stacksize,但没有任何效果,但是我想无限的递归仍然是罪魁祸首。 最佳答案
在我的情况下(也使用Docker容器)出现了类似的错误。我发现了两种解决问题的方法。
选项1:增加预测IO的驱动程序内存
使用--driver-memory
标志:pio train -- --driver-memory 2g
从Tapster example:
选项2:增加JVM内存
这可以通过在export JAVA_OPTS=-Xmx2g
之前调用pio train
来实现。
有关JVM内存选项的更多详细信息,请参见What are the Xms and Xmx parameters when starting JVMs?。