我目前正在开发一个项目,其中包括针对Scala,MongoDB和Maven的Spark API。
我们使用的版本如下:
Spark:2.2.0
斯卡拉:2.11.8
Maven:3.5.3
MongoDB:3.6.3
Spark的MongoDB连接器:2.2.0
jar的主类包含以下代码行:
val spark = SparkSession.builder().master("local[*]").getOrCreate()
当我尝试运行main时,这是我的错误:
使用Spark的默认log4j配置文件:org / apache / spark / log4j-defaults.properties 18/05/30 10:04:26 INFO SparkContext:运行Spark 2.2.0版 线程“main”中的异常java.lang.NoSuchMethodError:com.google.common.cache。 CacheBuilder.refreshAfterWrite(JLjava / util的/并行/ TIMEUNIT)LCOM /谷歌/ COMM 上/高速缓存/ CacheBuilder; 在org.apache.hadoop.security.Groups。(Groups.java:96) 在org.apache.hadoop.security.Groups。(Groups.java:73) 在org.apache.hadoop.security.Groups.getUserToGroupsMappingService(Group s.java:293) 在org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupI nformation.java:283) 在org.apache.hadoop.security.UserGroupInformation.ensureInitialized(使用 rGroupInformation.java:260) 在org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject( UserGroupInformation.java:789) 在org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGrou pInformation.java:774) 在org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGr oupInformation.java:647) 在org.apache.spark.util.Utils $$ anonfun $ getCurrentUserName $ 1.apply(Utils) .scala:2430) 在org.apache.spark.util.Utils $$ anonfun $ getCurrentUserName $ 1.apply(Utils) .scala:2430) 在scala.Option.getOrElse(Option.scala:121) at org.apache.spark.util.Utils $ .getCurrentUserName(Utils.scala:2430) 在org.apache.spark.SparkContext。(SparkContext.scala:295) 在org.apache.spark.SparkContext $ .getOrCreate(SparkContext.scala:2509) 在org.apache.spark.sql.SparkSession $ Builder $$ anonfun $ 6.apply(SparkSessi) on.scala:909) 在org.apache.spark.sql.SparkSession $ Builder $$ anonfun $ 6.apply(SparkSessi) on.scala:901) 在scala.Option.getOrElse(Option.scala:121) 在org.apache.spark.sql.SparkSession $ Builder.getOrCreate(SparkSession.sc ALA:901) 在fr.atos.gsec.Main $ .main(Main.scala:12) 在fr.atos.gsec.Main.main(Main.scala)`
错误由getOrCreate()
方法触发。
当我直接在IntelliJ上运行此主程序时,它可以正常工作并启动Spark,没有任何问题。
非常感谢你的帮助
答案 0 :(得分:0)
您需要将库包含在导出的jar中。默认情况下,它们不包含在导出的Jar中,因为IDE假定它们在运行时存在,而它们不存在。否则,可能是your classpath contains two or more versions of guava.
确保您只有一个guava binary available
应用程序。