Spark 和预测 IO:NoClassDefFoundError 尽管存在依赖关系

Spark and Prediction IO: NoClassDefFoundError Despite Dependency Existing

问题:

我正在尝试使用 Spark 1.6.1 和 PredictionIO 0.9.5 训练一个 Prediction IO 项目,但是在 Executors 开始工作后作业立即失败。这在 Stand-Alone Spark 集群和 Mesos 集群中都会发生。在这两种情况下,我都从远程客户端部署到集群,即我是 运行 pio train -- --master [master on some other server] .

症状:

调查:

据我所知,SPARK_CLASSPATH 已弃用,提交时应替换为 --jars。我宁愿不依赖于已弃用的功能。调用 pio train 或使用我的基础架构时,我是否遗漏了什么?执行程序从驱动程序获取依赖项是否存在缺陷(例如竞争条件)?

问题是 java.lang.NoClassDefFoundError: Could not initialize class 实际上并不意味着依赖项不存在,而是一个命名不当的异常,真正的问题是 class 加载器加载有问题class。实际问题将以 java.lang.ExceptionInInitializerError 的形式报告,这很可能是从静态代码块中抛出的。很难说出 java.lang.NoClassDefFoundErrorjava.lang.ClassNotFoundException 之间的区别,但后者实际上意味着缺少依赖项( 和其他人提供了更多详细信息)。