Search code examples
scalaapache-sparkjar

java.lang.NoClassDefFoundError: com/twitter/jsr166e/LongAdder


I have a spark cluster with 4 nodes and i try to start app: spark-submit --deploy-mode cluster --class "Init" --master spark://host /home/cassandra/spark2Cassandra-assembly-0.1.jar - this doesn't work even if i add this: --jars /home/cassandra/jsr166e-1.1.0.jar

Also, i tried to assembly my app with all dependencies inckuding com/twitter/jsr166e/LongAdder

libraryDependencies += "com.twitter" % "jsr166e" % "1.1.0"

Also, i tried to add this jar into all nodes' spark\jars dir - this didn't work for me

How can i distribute this jar to my cluster?

Full error (the same message many times):

java.lang.NoClassDefFoundError: com/twitter/jsr166e/LongAdder at org.apache.spark.metrics.OutputMetricsUpdater$TaskMetricsSupport$class.$init$(OutputMetricsUpdater.scala:107) at org.apache.spark.metrics.OutputMetricsUpdater$TaskMetricsUpdater.(OutputMetricsUpdater.scala:153) at org.apache.spark.metrics.OutputMetricsUpdater$.apply(OutputMetricsUpdater.scala:75) at com.datastax.spark.connector.writer.TableWriter.writeInternal(TableWriter.scala:174) at com.datastax.spark.connector.writer.TableWriter.insert(TableWriter.scala:162) at com.datastax.spark.connector.writer.TableWriter.write(TableWriter.scala:149) at com.datastax.spark.connector.RDDFunctions$$anonfun$saveToCassandra$1.apply(RDDFunctions.scala:36) at com.datastax.spark.connector.RDDFunctions$$anonfun$saveToCassandra$1.apply(RDDFunctions.scala:36) at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) at org.apache.spark.scheduler.Task.run(Task.scala:108) at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:335) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748)

UPDATED

If i use local mode and start it via:

spark-shell --jars /data/tmp/spark-cassandra-connector-2.0.5-s_2.11.jar,/data/tmp/jsr166e-1.1.0.jar 

It works, but the same doesn't work for cluster mode


Solution

  • The problem was in SPARK_HOME environment variable which wasn't defined on nodes