Ошибка выполнения файла Maven JAR, содержащего SparkSession Builder - PullRequest
0 голосов
/ 30 мая 2018

В настоящее время я работаю над проектом, который включает в себя Spark API для Scala, MongoDB и Maven.

Используются следующие версии:

Spark: 2.2.0

Scala: 2.11.8

Maven: 3.5.3

MongoDB: 3.6.3

Разъем MongoDB для Spark: 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 ИНФОРМАЦИЯ SparkContext: Запуск Spark версии 2.2.0 Исключение в потоке "main" java.lang.NoSuchMethodError: com.google.common.cache.CacheBuilder.refreshAfterWrite (JLjava / util / concurrent / TimeUnit;) Lcom / google / comm on / cache / CacheBuilder;в org.apache.hadoop.security.Groups. (Groups.java:96) в org.apache.hadoop.security.Groups. (Groups.java:73) в org.apache.hadoop.security.Groups.getUserToGroupsMappingService (Groups.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) в org.apache.spark.util.Utils $ .getCurrentUserName (Utils.scala: 2430) в org.apache.spark.SparkContвнешнее (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.

Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 30 мая 2018

Вам нужно включить библиотеки в экспортированный jar.По умолчанию они не включаются в экспортированный Jar, поскольку в среде IDE предполагается, что они присутствуют во время выполнения, а это не так.В противном случае, возможно, что your classpath contains two or more versions of guava. Убедитесь, что у вас есть только один guava binary available для приложения.

...