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?

08-28 16:51