我有一个包含4个节点的火花簇,我尝试启动应用程序:
spark-submit --deploy-mode cluster --class "Init" --master spark://host /home/cassandra/spark2Cassandra-assembly-0.1.jar
- 即使我添加此内容也不起作用:--jars /home/cassandra/jsr166e-1.1.0.jar
此外,我尝试使用包含com/twitter/jsr166e/LongAdder
libraryDependencies += "com.twitter" % "jsr166e" % "1.1.0"
另外,我试图将这个jar添加到所有节点的spark \ jars目录中 - 这对我不起作用
如何将此jar分发到我的群集?
完整错误(多次显示相同的消息):
java.lang.NoClassDefFoundError:com / twitter / jsr166e / LongAdder at at org.apache.spark.metrics.OutputMetricsUpdater $ TaskMetricsSupport $ $类初始化$(OutputMetricsUpdater.scala:107)。 在 org.apache.spark.metrics.OutputMetricsUpdater $ TaskMetricsUpdater(OutputMetricsUpdater.scala:153)。 在 org.apache.spark.metrics.OutputMetricsUpdater $。适用(OutputMetricsUpdater.scala:75) 在 com.datastax.spark.connector.writer.TableWriter.writeInternal(TableWriter.scala:174) 在 com.datastax.spark.connector.writer.TableWriter.insert(TableWriter.scala:162) 在 com.datastax.spark.connector.writer.TableWriter.write(TableWriter.scala:149) 在 com.datastax.spark.connector.RDDFunctions $$ anonfun $ saveToCassandra $ 1.适用(RDDFunctions.scala:36) 在 com.datastax.spark.connector.RDDFunctions $$ anonfun $ saveToCassandra $ 1.适用(RDDFunctions.scala:36) 在org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) 在org.apache.spark.scheduler.Task.run(Task.scala:108)at org.apache.spark.executor.Executor $ TaskRunner.run(Executor.scala:335) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:748)
已更新
如果我使用本地模式并通过以下方式启动它:
spark-shell --jars /data/tmp/spark-cassandra-connector-2.0.5-s_2.11.jar,/data/tmp/jsr166e-1.1.0.jar
它可以工作,但同样不适用于群集模式
答案 0 :(得分:1)
如果您没有,请从maven repo下载jsr166e.jar
将jsr166e.jar
文件复制到SPARK_HOME/jars/
(在所有火花节点上)并再试一次。这对我有用。
答案 1 :(得分:-1)
问题出在SPARK_HOME环境变量中,该变量未在节点
上定义