1

I have Scala project build with scala verison 2.12 and I can't change scala version of the project. I have create jar file of this project let's call it scalaproject.jar and now I want to include this jar file in spark session. When I create spark session by doing :

spark = SparkSession.builder.config("spark.driver.extraClassPath", "scalaproject.jar").getOrCreate()

I get below error:

Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V
    at scala.xml.Null$.<init>(Null.scala:23)
    at scala.xml.Null$.<clinit>(Null.scala)
    at org.apache.spark.ui.jobs.AllJobsPage.<init>(AllJobsPage.scala:43)
    at org.apache.spark.ui.jobs.JobsTab.<init>(JobsTab.scala:45)
    at org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:61)
    at org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:80)
    at org.apache.spark.ui.SparkUI$.create(SparkUI.scala:175)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:444)
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247)
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
    at py4j.Gateway.invoke(Gateway.java:238)
    at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)
    at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69)
    at py4j.GatewayConnection.run(GatewayConnection.java:238)
    at java.base/java.lang.Thread.run(Thread.java:834)

From this post, I know that I am getting this issue because of version mismatch. My project is using scala 2.12 and SageMaker notebook is using scala 2.11.

I have scala2.12.jar that I want to send to sparksession so when spark session is create, it can use scala2.12.jar to run scalaproject.jar.

I tried adding scala2.12.jar by doing:

spark = SparkSession.builder.config("spark.driver.extraLibraryPath", "scala2.12.jar").config("spark.driver.extraClassPath", "scalaproject.jar").getOrCreate()

But error is still the same. Can someone please guide me as to how can I add scala2.12.jar in to sparksession in SageMaker notebook?

Ksheth
  • 33
  • 6

0 Answers0