【发布时间】:2017-11-24 20:18:40
【问题描述】:
build.sbt
lazy val commonSettings = Seq(
organization := "com.me",
version := "0.1.0",
scalaVersion := "2.11.0"
)
lazy val counter = (project in file("counter")).
settings(commonSettings:_*)
计数器/build.sbt
name := "counter"
mainClass := Some("Counter")
scalaVersion := "2.11.0"
val sparkVersion = "2.1.1";
libraryDependencies += "org.apache.spark" %% "spark-core" % sparkVersion % "provided";
libraryDependencies += "org.apache.spark" %% "spark-sql" % sparkVersion % "provided";
libraryDependencies += "org.apache.spark" %% "spark-streaming" % sparkVersion % "provided";
libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector" % "2.0.2";
libraryDependencies += "org.apache.spark" %% "spark-streaming-kafka-0-8" % sparkVersion;
libraryDependencies += "com.github.scopt" %% "scopt" % "3.5.0";
libraryDependencies += "org.scalactic" %% "scalactic" % "3.0.1";
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test";
mergeStrategy in assembly := {
case PathList("org", "apache", "spark", "unused", "UnusedStubClass.class") => MergeStrategy.first
case x => (mergeStrategy in assembly).value(x)
}
counter.scala:
object Counter extends SignalHandler
{
var ssc : Option[StreamingContext] = None;
def main( args: Array[String])
运行
./spark-submit --class "Counter" --master spark://10.1.204.67:6066 --deploy-mode cluster file://counter-assembly-0.1.0.jar
错误:
17/06/21 19:00:25 INFO Utils: Successfully started service 'Driver' on port 50140.
17/06/21 19:00:25 INFO WorkerWatcher: Connecting to worker spark://Worker@10.1.204.57:52476
Exception in thread "main" java.lang.ClassNotFoundException: Counter
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.spark.util.Utils$.classForName(Utils.scala:229)
at org.apache.spark.deploy.worker.DriverWrapper$.main(DriverWrapper.scala:56)
at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala)
有什么想法吗?谢谢
更新
我在Failed to submit local jar to spark cluster: java.nio.file.NoSuchFileException 遇到了问题。现在,我将jar复制到spark-2.1.0-bin-hadoop2.7/bin,然后运行./spark-submit --class "Counter" --master spark://10.1.204.67:6066 --deploy-mode cluster file://Counter-assembly-0.1.0.jar
火花簇是2.1.0的
但是 jar 是在 2.1.1 和 Scala 2.11.0 中组装的。
【问题讨论】:
-
您是否尝试将 counter.scala 重命名为 Counter.scala?
-
@TomLous 不,我会尝试
-
@TomLous 刚才试过了,不行
-
嗯,如果没有整个项目可用,很难说。虽然有一些小提示/不需要的建议(可能无济于事,但无论如何都在这里)。 1. 不要使用 scala 2.11.0,而是 2.11.11 2. 不要在 scala 中使用分号(非常 Java) 3. 为什么有 2 个 build.sbt 文件。这么小的项目1应该够了吧? 4. 在 src/main/scala/ 文件夹中重新组织您的代码 5. 不要使用 var(不是很 FP)。对不起,我帮不了你,但如果你可以通过 github 分享项目代码,或者我或其他人可以快速查看它吗?
-
我打赌这是因为你使用
file://counter-assembly-0.1.0.jar而不是target/scala-2.11/counter-assembly-0.1.0.jar引用它时没有正确使用jar。换句话说,你从哪里开始spark-submit?
标签: scala apache-spark spark-submit