sombreamento de montagem sbt para criar jar de gordura para executar na faísca
Estou usando o assembly sbt para criar um frasco de gordura que pode funcionar com faísca. Tem dependências emgrpc-netty
. A versão do Goiaba no spark é mais antiga que a exigida pelogrpc-netty
e eu me deparo com este erro:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument. Consegui resolver isso definindo userClassPathFirst como true no spark, mas gera outros erros.
Corrija-me se estiver errado, mas, pelo que entendi, não seria necessário definir userClassPathFirst como true se fizer o sombreamento corretamente. Veja como faço o sombreamento agora:
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"
)
O que estou fazendo de errado aqui e como corrigi-lo?