Apache spark Spark作业部署到cloudera失败
在开发spark strreaming程序时,我正在使用guice体系结构。它可以在我的eclipse中运行,没有任何错误。但是,在使用spark submit命令编译和部署后,它返回一个错误:Apache spark Spark作业部署到cloudera失败,apache-spark,guice,cloudera,spark-streaming,cloudera-cdh,Apache Spark,Guice,Cloudera,Spark Streaming,Cloudera Cdh,在开发spark strreaming程序时,我正在使用guice体系结构。它可以在我的eclipse中运行,没有任何错误。但是,在使用spark submit命令编译和部署后,它返回一个错误: java.lang.NoClassDefFoundError: com/google/common/base/Preconditions 在谷歌搜索之后,我注意到只有在使用guice 3.0时才会出现此错误。但我使用的是guice 4.0。我的spark版本是1.5.2,cloudera版本是5.3.
java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
在谷歌搜索之后,我注意到只有在使用guice 3.0时才会出现此错误。但我使用的是guice 4.0。我的spark版本是1.5.2,cloudera版本是5.3.2。是否有解决此错误的方法?不幸的是,Spark v1.5.2依赖于
com.google.inject:guice:3.0
因此,我怀疑正在发生的事情是,您的项目同时拉动了:
(作为依赖项文件中声明的直接依赖项,如Guice 4.0
或pom.xml
);及build.sbt
(由Guice 3.0
产生的可传递依赖项)Spark v1.5.2
更新: 实际上,
org.apache.spark:spark-core_2.10:1.5.2
pullscom.google.inject:guice:3.0
:
+-org.apache.spark:spark-core_2.10:1.5.2 [S]
+ ...
...
+-org.apache.hadoop:hadoop-client:2.2.0
| +-org.apache.hadoop:hadoop-mapreduce-client-app:2.2.0
| | +-com.google.protobuf:protobuf-java:2.5.0
| | +-org.apache.hadoop:hadoop-mapreduce-client-common:2.2.0
| | | +-com.google.protobuf:protobuf-java:2.5.0
| | | +-org.apache.hadoop:hadoop-mapreduce-client-core:2.2.0
| | | | +-com.google.protobuf:protobuf-java:2.5.0
| | | | +-org.apache.hadoop:hadoop-yarn-common:2.2.0 (VIA PARENT org.apache.hadoop:hadoop-yarn:2.2.0 and then VIA ITS PARENT org.apache.hadoop:hadoop-project:2.2.0)
| | | | | +-com.google.inject:guice:3.0
...
spark corepom.xml
hadoop纱线的公共
pom.xml
是
hadoop纱线pom.xml
是
hadoop项目
pom.xml
是。您有pom.xml的参考资料吗?我怀疑我的类路径一团糟。哈哈,我找不到任何依赖于guice本身的pom.xml,这很尴尬。但是,如果我使用“spark core”v1.5.2作为依赖项创建一个胖jar,我可以看到包含了Guice 3.0(为什么我得出了前面的结论)。一旦我有了更多的信息,并且我明白了为什么会发生这种情况,我会马上给你回复。@DericDominic你看:)谢谢你的推荐。:)