pio列车阶段的java.lang.StackOverflower错误

pio列车阶段的java.lang.StackOverflower错误,java,debugging,apache-spark,docker,predictionio,Java,Debugging,Apache Spark,Docker,Predictionio,pio-train(在成功构建pio之后)会给我一个类似这样的错误: [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

pio-train
(在成功构建
pio
之后)会给我一个类似这样的错误:

[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等会或多或少地重复,直到堆栈已满

有人知道这可能是什么或者如何调试吗

NB:我正在docker容器中运行prediction.io,这可能会(?)导致问题,但再次声明:我真的不知道如何继续

非常感谢您的帮助


PS:我使用SPARK_DAEMON_JAVA_OPTS=“-Xss=9m”增加了堆栈大小,但没有任何效果,但我猜无限递归是罪魁祸首。

在我的案例中出现了类似的错误(也使用Docker容器)。我找到了两种解决问题的方法

选项1:增加预测IO的驱动程序内存 使用
--驾驶员存储器
标志:

pio列车---驾驶员存储器2g

从:

[使用--driver memory选项限制Apache PredictionIO使用的内存(孵化)。如果没有此Apache PredictionIO(孵化),可能会消耗太多内存,从而导致崩溃

选项2:增加JVM内存 这可以通过在
pio-train
之前调用
export-JAVA\u OPTS=-Xmx2g
来实现


有关JVM内存选项的更多详细信息,请参阅。

在我的案例中出现了类似的错误(也使用Docker容器)。我找到了两种解决问题的方法

选项1:增加预测IO的驱动程序内存 使用
--驾驶员存储器
标志:

pio列车---驾驶员存储器2g

从:

[使用--driver memory选项限制Apache PredictionIO使用的内存(孵化)。如果没有此Apache PredictionIO(孵化),可能会消耗太多内存,从而导致崩溃

选项2:增加JVM内存 这可以通过在
pio-train
之前调用
export-JAVA\u OPTS=-Xmx2g
来实现


有关JVM内存选项的更多详细信息,请参阅。

您使用的是哪个模板?模板。我没有提到的是,几周前(当我最后一次尝试时),它工作得很好。所以发生了一些变化。你使用的是哪种模板?模板。我没有提到的是,几周前(当我最后一次尝试时),它工作得很好。所以发生了一些变化。我手头没有代码。但我觉得有趣的是,从你引用的文档中,
--驱动程序内存
限制了内存的使用。所以(如果doc是正确的)给pio的内存是这样减少的。我并不完全清楚。通过使用此标志,算法是否可能限制其内存使用,而不是增加保留内存?但如果我回忆正确,我会将JVM内存重置为远小于2GB的值,因此分配的内存似乎也会受到影响。当我有更多的时间时,我将尝试更深入地讨论这个问题。我尝试了'pio train--driver memory 4g--conf spark.executor.cores=1',但成功地我现在手头没有代码。但我觉得有趣的是,从你引用的文档中,
--驱动程序内存
限制了内存的使用。所以(如果doc是正确的)给pio的内存是这样减少的。我并不完全清楚。通过使用此标志,算法是否可能限制其内存使用,而不是增加保留内存?但如果我回忆正确,我会将JVM内存重置为远小于2GB的值,因此分配的内存似乎也会受到影响。当我有更多的时间时,我将尝试更深入地讨论这个问题。我尝试了'pio train--driver memory 4g--conf spark.executor.cores=1',并成功地完成了