Apache Spark: 3.0.0 Protobuf: 3.5.1
Exception:
"main" java.lang.NoSuchMethodError: com.google.protobuf.Descriptors$Descriptor.getOneofs()Ljava/util/List;
Issue: When submitting my spake scala application on my local kubernetes, I am getting:
"java.lang.NoSuchMethodError: com.google.protobuf.Descriptors$Descriptor.getOneofs()Ljava/util/List;"
Seems there is a conflict in dependency for Protobuff.
Have tried a few things like https://github.com/nats-io/stan.java/issues/20 but nothing is working.
my build.sbt:
name := "test"
version := "0.1"
scalaVersion := "2.12.8"
val sparkVersion = "3.0.0"
val protobufVersion = "3.5.1"
resolvers += "confluent" at "http://packages.confluent.io/maven/"
resolvers += Resolver.jcenterRepo
resolvers += "Spark Packages Repo" at "http://dl.bintray.com/spark-packages/maven"
assemblyMergeStrategy in assembly := {
case "META-INF/services/org.apache.spark.sql.sources.DataSourceRegister" => MergeStrategy.concat
case PathList("META-INF", xs@_*) => MergeStrategy.discard
case "application.conf" => MergeStrategy.concat
case x => MergeStrategy.first
}
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("com.google.protobuf.*" -> "shadedproto.@1").inProject
.inLibrary("com.google.protobuf" % "protobuf-java" % protobufVersion)
)
coverageEnabled.in(ThisBuild, IntegrationTest, test) := true
//skipping test cases during package
test in assembly := {}
lazy val server = (project in file("."))
.configs(IntegrationTest)
.settings(Defaults.itSettings)
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-sql" % sparkVersion % Provided,
"org.apache.spark" %% "spark-sql-kafka-0-10" % sparkVersion,
"org.apache.kafka" % "kafka-clients" % "2.2.1",
"org.postgresql" % "postgresql" % postgreSqlVersion,
"com.google.protobuf" % "protobuf-java" % protobufVersion,
"com.typesafe" % "config" % "1.4.0"
)


