Spark Scala,自包含应用程序中的空jar

时间:2016-10-31 15:40:15

标签: scala apache-spark sbt

我尝试按照此处的教程:http://spark.apache.org/docs/latest/quick-start.html#self-contained-applications。使用命令sbt package,我获得一个空罐子。后续命令:

spark-submit --class SimpleApp --master local[4] target/scala-2.11/simple-project_2.11-1.0.jar

结果:

java.lang.ClassNotFoundException: SimpleApp
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.apache.spark.util.Utils$.classForName(Utils.scala:225)
        at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:693)
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

我使用了教程中描述的正确布局,根目录为simple.sbtsrc/scala/SimpleApp.scala为源代码。

我的配置是Windows 10,Scala,Hadoop,Spark和sbt二进制文件来自各自的网站。

1 个答案:

答案 0 :(得分:0)

sbt强制执行严格的文件夹结构,我忘记了main中间目录。以前我只使用Eclipse以递归方式扫描src中的所有文件夹。

在目录结构中添加中间main文件夹允许编译并按预期运行:

src
  main
    scala
      SimpleApp.scala

我在本文档http://www.scala-sbt.org/0.13/docs/Directories.html

中想到了这一点