они не будут включены в ваш jar-файл и не будут затенены (следовательно, spark будет использовать свою собственную не заштрихованную версию guava, которая есть в кластере).
ользую сборку sbt для создания толстой банки, которая может работать на спарке. Есть зависимости отgrpc-netty
, Версия Guava на спарк старше, чем требуетсяgrpc-netty
и я сталкиваюсь с этой ошибкой:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument, Я смог решить эту проблему, установив для userClassPathFirst значение true при искре, но это приводит к другим ошибкам.
Поправьте меня, если я ошибаюсь, но из того, что я понимаю, мне не нужно устанавливать для userClassPathFirst значение true, если я правильно выполняю заливку. Вот как я делаю затенение сейчас:
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("com.google.guava.**" -> "my_conf.@1")
.inLibrary("com.google.guava" % "guava" % "20.0")
.inLibrary("io.grpc" % "grpc-netty" % "1.1.2")
)
libraryDependencies ++= Seq(
"org.scalaj" %% "scalaj-http" % "2.3.0",
"org.json4s" %% "json4s-native" % "3.2.11",
"org.json4s" %% "json4s-jackson" % "3.2.11",
"org.apache.spark" %% "spark-core" % "2.2.0" % "provided",
"org.apache.spark" % "spark-sql_2.11" % "2.2.0" % "provided",
"org.clapper" %% "argot" % "1.0.3",
"com.typesafe" % "config" % "1.3.1",
"com.databricks" %% "spark-csv" % "1.5.0",
"org.apache.spark" % "spark-mllib_2.11" % "2.2.0" % "provided",
"io.grpc" % "grpc-netty" % "1.1.2",
"com.google.guava" % "guava" % "20.0"
)
Что я здесь не так делаю и как мне это исправить?