0

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"但没有任何效果,但我猜无限递归是罪魁祸首。

4

1 回答 1

2

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

选项 1:增加 Prediction IO 的驱动程序内存

使用--driver-memory标志:

pio train -- --driver-memory 2g

Tapster 示例中:

[使用] --driver-memory 选项来限制 Apache PredictionIO(孵化)使用的内存。没有这个 Apache PredictionIO(孵化)会消耗太多内存导致崩溃。

选项 2:增加 JVM 内存

这可以通过调用export JAVA_OPTS=-Xmx2gbefore来完成pio train

请参阅启动 JVM 时 Xms 和 Xmx 参数是什么?有关 JVM 内存选项的更多详细信息。

于 2017-01-23T09:21:10.160 回答